• 締切済み

ご教授願います。

VBA初心者です。 業務上で困っているのでどなたかご教授願います。 VBAは多少勉強しましたが、期限の関係上自力解決が困難となりました。 よろしくお願い致します。 <プログラム構成> userformを利用して、選択項目を設けます。 選択していった内容をデータシートに最終的に記録します。 例) userform1(userform名"色") ○赤  ○青 ○緑  ○黄 [次へ] [戻る] ←コマンドボタンで作成。[次へ]選択でuserform2へ。今回は赤を選択したとします。 userform2(userform名"種類") ○りんご  ○トマト ○パプリカ ○東京タワー [次へ] [戻る] ←同様。今回はりんごを選んだとします。 userform3(userform名"季節") ○一月   ○四月 ○八月   ○十二月 [テキストボックスでコメント欄作成] [完了] [戻る] ←今回は四月を選択し、テキストには[甘い]と入力し、完了します。完了するとデータシートへ転送されるとします。 <データシートの構成> 色  種類  季節  コメント 赤  りんご 四月  甘い このように構成されます。また、次回登録したい場合は、空白セルを検索して前のデータの下に引き続き登録されていくようにしたいです。 <現在までの進度> userformを作成し、選択項目を選び、予め登録してあるuserformが表示されるところまでVBAでプログラムを組みました。 しかし、userformで選択していった項目をデータシートへ転送するやり方がわかりません。私の考えは、選択項目毎にuserformが予め登録されているので、完了ボタンを押せば今までの選択項目を転送されるように最後のuserformに登録していればいいのでは。と思っています。 なので今回では最後のuserfromの完了を押せば最後のuserfromの完了ボタンにデータシートへ"色"種類"季節"はもう"赤"りんご"四月(ここは選択項目を転送されるようにオプションコマンドにプログラム入力"をし、テキストボックスに入力されているコメントをそのまま転送されるのがいいと思いました。 ******************************** ここまで進めるのに苦労しましたので、今までのプログラムを使用したいのですが、最後のプログラムをご教授願いないでしょうか? 拙い御説明で不明瞭な点があると思いますが、よろしくお願い致します。 こまめに閲覧して返答してくださった方へのお礼、不明瞭な点の明確化を図っていきたいですが、私の返答が遅くなるかもしれません。 わがままばかりで申し訳ないですが、よろしくお願い致します。

みんなの回答

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.7

フォームを消して進んでいく場合 都度unloadを利用したいのでしたら、グローバル変数等を利用して 閉じる前にデータを保存しておくか、都度セルに書き込む操作が必要と なります。 unloadではなくて UserForm1.Hide を利用してみればいかがですか 見えなくしているだけなので 戻ったときにボタンの選択状態も覚えていますし 現在のコードのunloadの部分を変更するだけですみます。 それで最後にすべてのフォームをunloadします。 エラーが出るのは消したために存在しなくなったオブジェクト UserForm1.OptionButton1.Captionなどを指定してるからだと思います。 フォームを開いたときにどのシートが見えているのか分からないのですが Range("a" & m_row).Value = UserForm1.OptionButton1.Caption は現在見えているシートにデータを書き込みます。 sheet2の最終行を調べて別のシートに書き込んだ場合 変なところに書き込むことになります。 sheet2限定にした方がよさそうなので先のコードを以下のように変更してください。 With Worksheets("sheet2") m_row = .Range("a" & Rows.Count).End(xlUp).Row + 1 If UserForm1.OptionButton1 = True Then .Range("a" & m_row).Value = UserForm1.OptionButton1.Caption ElseIf UserForm1.OptionButton2 = True Then .Range("a" & m_row).Value = UserForm1.OptionButton2.Caption 中略 .Range("c" & m_row).Value = UserForm2.TextBox1.Value End With Rangeの前にドット"."が存在することに注意してください。 シートの保護については何もそのあたり操作をしていないので原因は不明です。

stan1225
質問者

補足

たびたびのご回答ありがとうございます。 unloadではなくてhideなどがあるのですね。 なるほど。英語の意味でも隠すといった意味がありますもんね。 プログラムの勉強をしている際に英語の意味があてはまることからして言われてみればわかります。 ありがとうございます。 ちなみに書き込むシート選択肢によって利用する場合、どこかを変数表示すればいいのかはわかりますけど、 どこを 前おきのプログラム?がどういったものが必要か などがわかりません。 kmetuさんの御説明は大変わかりやすく、関心させていただいてますが、vbaがとても便利で楽しいものだと思ってきました。 これも一重にkmetuさんのおかげです。 何度も申し上げていますが本当にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.6

> Worksheets(2)でシート名に関わらずシートを指定するか、 > Worksheets("変更したシート名") > か、ですね はい ただシートを順番(番号)で指定する場合気をつけないと 該当シートの左に新しいシートを追加したとか シートの位置を移動したりした場合 見当違いのシートを指定することになりますから 思わぬ動作になってしまって、全然見当違いの場所を変更してしまったりします。 マクロを実行した結果は元に戻すことができないと思いますので 深刻な結果になる可能性もあります。 それと違ってシート名で指定した場合は、シート名を変更しても 指定箇所でエラーになって止まりますからこちらのほうが無難でしょう。 とはいえ、シート名で指定できない状態になることもあるでしょうから 数値(変数も可)で指定できることを覚えておいても損はないと思います。

stan1225
質問者

補足

度々すみません。 うまくいきませんでした。 今userformをオプションコマンドで進んでいく際に、「次へ」のボタンのプログラムに private sub commandbutton1 click() if (optionbutton1 value = true) then unload userform1 userform2.show Eself (optionbutton2 value = true) then unload userform1 userform2 ・・・ となっているのですが、前回ご教授頂いたプログラムだとuserfromを消して進んでいくのはどうもまずそうですね? 消さないで進んでいくしかありませんかね? 今「完了」のプログラムには前回ご指導頂いたプログラムをいれています。 後 m_row =Worksheets("sheet2").Range("a" & Rows.Count).End(xlUp).Row + 1 でsheet2のところに私が設定したシート名をいれているのですが、実行しても設定したシートに登録されなかったり。実行エラー1001が発生したりして、セルの保護を加えた覚えはないのですが保護されていてダメですとかでます。 どうしてでしょうか? 本当にわからずじまいで申し訳ありません。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

> シートは2で名前は変えているのですが、この場合名前は関係ないとはおもってはいたんで、変更したコードで大丈夫だとおもったのですが何がいけないのかわかりません。 シートの名前が不明なのでデフォルトの名前Sheet2を例示しているだけですので 名前を変更している場合その名前を指定します。 名前を指定しない場合、左からの順番を数値で指定します 左から2番目でしたら Worksheets(2) になります。

stan1225
質問者

補足

なるほど! 今日はもう帰宅したので明日早速試してみます! シート指定の方法は2通りあるみたいですね。 Worksheets(2)でシート名に関わらずシートを指定するか、 Worksheets("変更したシート名") か、ですね。 これでよろしいんでしょうか? 早期返答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

> >m_row = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row + 1ですがこれは空白セルを検索しているのでしょうか? A列のデータが入力された最終行の次の行番号を取得しています A15までデータが入っている場合16という数値がm_rowに代入されます > また、ActiveSheetのあとにActiveSheet1のようにシート番号(?)を入力すればよろしいのでしょうか? いえそのままActiveSheetでいいです、現在選択されているシートという意味です sheet2とか決まっているのでしたら Worksheets("sheet2").Range("a" & Rows.Count).End(xlUp).Row + 1 とかに変更してください > これはuserform1のオプションボタンを1~4までのどれかを選択した場合、先ほどのActiveSheetのセルのA列の空白行にオプションボタンの名前が入る。で理解してよろしいでしょうか? 最初に説明した行のA列のセル(説明の通りだとA16)に userform1の選択されたオプションボタンのCaption (ボタンの名前ではなくボタンの横のテキスト)が入ります。 次のブロックはform2の結果はB列にという流れになりますので ご自身のフォームの数にあわせて適宜追加してください。 > >Range("c" & m_row).Value = UserForm2.TextBox1.Value これはuserform2のテキストボックスがc列の空白行に転送されるでよろしいでしょうか? C列でA列のデータが入っている最終の次の行(最初に説明した通りだとC16) になりますのでもしそこに何かデータが入っている場合上書きします。 > 最後に確認なんですが、このプログラムは前回わたくしが説明しました「完了のコマンドボタンのvbaに書き込めばよろしいんでしょうか? はいそうです。

stan1225
質問者

補足

返答が遅くなったにも関わらずご丁寧な回答ありがとうございます。 丁寧な説明のおかげでプログラム内容が理解できました。 しかし、初歩的な事どうもわかっていないのか、ご指導いただいた内容で自分のフォームに合わせて利用しましたがデバックエラー(?)がでてきました。 m_row = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row + 1ですが、ご指導いただいた通り m_row =Worksheets("sheet2").Range("a" & Rows.Count).End(xlUp).Row + 1 としましたが、エラーがでました。 シートは2で名前は変えているのですが、この場合名前は関係ないとはおもってはいたんで、変更したコードで大丈夫だとおもったのですが何がいけないのかわかりません。 たびたび申し訳ありませんがご指導お願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • hornet3
  • ベストアンサー率19% (12/62)
回答No.3

今月いっぱいなら楽勝ですね。 (1)入れたいセルに入れたい値を入れる。 (2)テキストボックスの内容をボタンを押したときにセルに入れる。 (3)オプションボタンで選択した内容をセルに転送する。 (4)シートのどの行まで値が入っているか調べる。 (5)空白の行を探して値を入れる。 (6)完了ボタンをおすまで選択した内容を一時的に覚えておき、完了ボタンを押したときに一度に値がはいるようにする。 の順にやっていきましょう。一度に説明すると混乱するのでひとつづつ。 (1)シートとセルを指定して、値を入れるには、以下のようにします。 Sheet1.Cells(4,2).Value = "甘い" Sheet1という名前のシートの4列2行目に”甘い”という文字列が入ります。

stan1225
質問者

補足

返答が大変遅くなり申し訳ありません。 また、返答ありがとうございます。 順番は理解できました。 Sheet1.Cells(4,2).Value = "甘い" これも理解できました。

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

Dim m_row m_row = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row + 1 If UserForm1.OptionButton1 = True Then Range("a" & m_row).Value = UserForm1.OptionButton1.Caption ElseIf UserForm1.OptionButton2 = True Then Range("a" & m_row).Value = UserForm1.OptionButton2.Caption ElseIf UserForm1.OptionButton3 = True Then Range("a" & m_row).Value = UserForm1.OptionButton3.Caption ElseIf UserForm1.OptionButton4 = True Then Range("a" & m_row).Value = UserForm1.OptionButton4.Caption End If If UserForm2.OptionButton1 = True Then Range("b" & m_row).Value = UserForm2.OptionButton1.Caption ElseIf UserForm2.OptionButton2 = True Then Range("b" & m_row).Value = UserForm2.OptionButton2.Caption ElseIf UserForm2.OptionButton3 = True Then Range("b" & m_row).Value = UserForm2.OptionButton3.Caption ElseIf UserForm2.OptionButton4 = True Then Range("b" & m_row).Value = UserForm2.OptionButton4.Caption End If Range("c" & m_row).Value = UserForm2.TextBox1.Value Unload UserForm2 Unload UserForm1 こんな感じでいかがでしょう フォームはとりあえず2個にしていますのでご自身の環境に合わせて 増やしてください。

stan1225
質問者

補足

返答が大変遅くなり申し訳ありません。 また、返答・プログラムのご教授ありがとうございます。 プログラムに関して質問をさせてください。 >m_row = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row + 1 ですがこれは空白セルを検索しているのでしょうか? また、ActiveSheetのあとにActiveSheet1のようにシート番号(?)を入力すればよろしいのでしょうか? >If UserForm1.OptionButton1 = True Then Range("a" & m_row).Value = UserForm1.OptionButton1.Caption ElseIf UserForm1.OptionButton2 = True Then Range("a" & m_row).Value = UserForm1.OptionButton2.Caption ElseIf UserForm1.OptionButton3 = True Then Range("a" & m_row).Value = UserForm1.OptionButton3.Caption ElseIf UserForm1.OptionButton4 = True Then Range("a" & m_row).Value = UserForm1.OptionButton4.Caption End If これはuserform1のオプションボタンを1~4までのどれかを選択した場合、先ほどのActiveSheetのセルのA列の空白行にオプションボタンの名前が入る。で理解してよろしいでしょうか? >Range("c" & m_row).Value = UserForm2.TextBox1.Value これはuserform2のテキストボックスがc列の空白行に転送されるでよろしいでしょうか? 最後に確認なんですが、このプログラムは前回わたくしが説明しました「完了」のコマンドボタンのvbaに書き込めばよろしいんでしょうか? 以上、返答が大変遅くなりましたが、もう一度見ていただいたなら回答していただきたいと思います。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • hornet3
  • ベストアンサー率19% (12/62)
回答No.1

(1)なんのVBAでしょう?エクセル?アクセス?オートキャド?・・・ (2)期限はいつまでですか?(あんまり短期間だとソースでやりとりしないと無理かと・・・。)

stan1225
質問者

補足

早期返答ありがとうございます。 (1)なんのVBAでしょう?エクセル?アクセス?オートキャド?・・・ >>エクセルです。他にもVBAがあるのを忘れていました。 (2)期限はいつまでですか?(あんまり短期間だとソースでやりとりしないと無理かと・・・。) >>今月中くらいが一応期限です。ソースとは現在までのプログラム構成ということでしょうか? 申し訳ありませんが内容そのものはご提示できませんので、例でしかこちらとしてもご対応できません。 返答していただいたのに申し訳ありません。 不明瞭な点がございましたらこちらで再度例などを提示させていただきます。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ご教授願います。

    エクセルのVBAを多少勉強致しましたが、行き詰っていますのでどなたかご教授願います。 エクセルにコマンドボタンを二つ作成 最初のコマンドボタンをクリックするとコンボボックスが現れます。 コンボボックスには1~4があります。 1はシート1""あいう""のシート 2はシート1""かきく""のシート 3はシート1""さしす""のシート 4はシート1""たちつ""のシート を指定するようになっています。 ここでとりあえず自分の希望のしーとになるように1~4の数字を選びます。 次にもうひとつのコマンドボタンを選択するとテキストボックスが現れます。 記入し、テキストボックスと同userformにあらかじめ作っていたコマンドボタンをクリックすると先ほど選択した1~4にテキストボックスを転送するようにしたいのです。 hideを使って先ほど表示させたコンボボックスのuserformを隠して、テキストボックスのuserformを閉じる際に指定したシートをにとさせようとしましたが、 そのテキストボックスのuserformが何個かあるのでどうすればいいのかわかりません。 どなたかご教授願えませんでしょうか? よろしくお願い致します。 なお、私の説明不足で内容がよくわからなかったら一報ください。 申し訳ありませんが、どうぞよろしくお願い致します。

  • 教えてください。

    vba初心者です。 エクセルのマクロです。 userformをでコンボボックスとテキストボックスを作りました。 userformを起動させ、コンボボックスで1~20のどれかを選択し、 テキストボックスに何か記入し、完了をおすと、コンボボックスで選択したシートにテキストボックスの内容を記録させたいのです。 コンボボックスには1~20までの数字を登録します。 その1~4を選択したときはシート1 5~10はシート2 6~15はシート3 15~20はシート4 と振り分けられるようにしたいのです。 現在の状況は。 userform作成 テキストボックス作成 コンボボックス作成 完了のコマンドボタン作成 完了を押すとテキストボックスが記録される ここまできています。 あとはコンボボックスの使い方がわかりません。 わかりにくい説明ではあったとは思いますが、どなたかご教授お願い致します。 よろしくお願い致します。

  • ご教授願います。

    ちょっと行き詰ったので、どなたかご教授願います。 あるセルにデータの入力規則でプルダウンの選択事項が表示されるようにしました。 次にVBAで色々記録できるマクロを組みました。 マクロの記録先を先ほどプルダウンで選択したシートに転送させたいのです。 プルダウンの選択事項は12個、シートは4個。 どういうことかといいますと、 例えば、プルダウン選択事項が「あ い う か き く さ し す た ち つ」 とかの場合だと「あ~う」を選択した場合は「あ行」のシートへ。 「か~く」は「か行」 「さ~す」は「さ行」 「た~つ」は「た行」へとしたいのです。 プルダウン内容に例の様に順番に並んでいる場合でしたらできそうなのですが、これが入り混じっている場合どうすればいいのかわかりません。「あ か つ た う い き ち・・・」のように。 プルダウンの順番方法はできれば変えたくありませんのでどなたかわかる方ご教授ください。

  • EXCELのデータベース

    EXCEL2000を使用しています。 VBAを使ってデータベースを作ろうとしているのですが、ちょっとわからないのでどなたか教えてもらえませんか。 データベースへの入力はUSERFORMを使います。 USERFORMの内容は、 コンボボックス、テキストボックス1,2,3、コマンドボタン”登録”、”終了”です。 まず大項目は"SHEET DB"のA1:A120に入力されており、”発注者”、”請負者”、”病院”・・・・というのがあります。 この項目はUSERFORMのコンボボックスにセットされます。 次にテキストボックスの入力項目が3個あり、 TEXTBOX1 ・・・名前 TEXTBOX2 ・・・電話番号 TEXTBOX1 ・・・FAX を入力します。 発注者のデータベース入力範囲はA2:C100で、次の大項目、請負者のデータベース入力範囲は、D2:F100と言う風に延々と続きます。 USERFORMのコンボボックスで大項目を選択し、テキストボックス1,2,3の入力を入力し、コマンドボタン"登録"を押すと、大項目のデータベース範囲にテキストボックスのデータの空白行にデータが登録されます。 大項目が1個しかない場合は出来るのですが、大項目が複数になった場合の条件の設定がよくわかりません。 大項目の下図は数十個あり、1個1こセルに入力するのは大変で苦労しています。 VBAのプロの方なら初歩的すぎる事かもしれませんが、ビギナーな私にわかりやすくどうかご教示願います。

  • VBAのデータ抽出について

     列  A   B   C 行1 番号  色   形  2  1   白   丸  3  2   赤   三角  4  1   赤   丸  5  3   黄   四角 (1)Excel Sheet1にコマンドボタン1があり、それをクリックするとUserForm1が表示されます。 (2)UserForm1には「番号」「色」「形」の各コンボボックス1,2,3が配置されています。 (3)各コンボボックス1,2,3に表示されるのは、Sheet1の各列のデータです。 (4)コンボボックス1,2,3のうち1つ選択→その条件に合うデータを抽出。  コンボボックス1,2,3のうち2つ選択→その2つの条件に合うデータを抽出。  コンボボックス1,2,3のうち3つ選択→その3つの条件にあるデータを抽出。 (5)Sheet1のコマンドボタン2をクリックすると、Sheet1は元のデータ一覧に戻る。 というようなプログラムを組みたいと思っています。 (4)のデータ抽出、(5)の戻し方がよくわかりません。 どなたかご教授下さい。

  • エクセルVBAのテキストボックスの番号をシートから検索することはできるのでしょうか?

    はじめまして。「FAX送信案内」という書類の雛形を作っているのですが、FAX番号を入力すると企業名や部署、担当者の名前が自動で出たらいいと思い、現在エクセルVBAに挑戦しています。本やインターネットで、検索してみたのですがわからないので質問させて頂きます。(正直私は頭悪いです;;) UserFormの構成は下の4つのテキストボックスからなっており 「Fax番号」 「企業名」 「担当部署」 「担当者名」 等 検索用のデータシートは 「Fax番号」「企業名」「担当部署」「担当者名」 という構成です。  私が目指しているのは、UserFormの「Fax番号」部分に番号を入力すると、UserFormに各項目に対応した、企業名などのデータが表示され(UserForm上)、上記の4つのデータ以外の項目を入力し終えたら、登録ボタンを押し、定型のFAX送信案内シートに転写するというものです。  検索の条件がシートにある場合のものは沢山見つかったのですが、UserFormのテキストボックスに入力したものを検索することは可能なのでしょうか? 宜しくお願い致します。

  • エクセルVBA 集計

    事情がありピボットテーブルを使用しないで実現したいです シート1のドロップダウンリストで集計したい項目を2つ選択(15項目中) 例えば、項目1が色、項目2が形と選択 シート2に500件程(数が増える)のデータがあり、シート3へ集計 (シート3)  A | B | C | D |・・・・・・ 1|色|数|形|数|・・・・・・ 2|赤|30|○|10| 3|青|20|△|20| 4|白|40|□|30| 5|黄|40| ・ ・ シート1で設定した項目1でシート3の1行目を参照し、合致したデータをシート4のA列、B列に貼り付け シート1で設定した項目2でシート3の1行目を参照し、合致したデータをシート4の1行目、2行目に貼り付け 数値は例えばC3なら赤で○のものを表示 (シート4)  A | B | C | D |・・・・・・ 1| |   形  |・・・・・ 2| | |○|△|□| 3| |赤|20|10|16| 4|色|青|10|15|23| 5| |白|14|15|35| 6| |黄|17|15|35| ・ ・ このような感じでシート4を作るVBAをご伝授ください。 シート1、シート2、シート3は出来ているので大丈夫です。 稚拙な説明ですいません。 よろしくお願いいたします。

  • エクセルVBA リストビュー選択項目を別フォームへ

    皆さんこんにちは。 エクセル2013使用のVBA初心者です。 エクセルVBAのリストビューについて教えてください。 Userform1上にListview1とコマンドボタン1があります。 Listview1はSheet1を呼び込んだものが反映されており 左から駅名・顧客名・店舗名が記載されています。 Listview1でどれかを選択してコマンドボタン1を押したら Listview1で選択した項目の 駅名をUserform2のTextbox1に 顧客名を〃のTextbox2に 店舗名を〃のTextbox3に反映したいのですが リストビューの情報がネット上にも少なく コードをどのように書いたら良いか見当がつきません。 Userform2のPrivate Sub UserForm_Initialize()に TextBox1 = UserForm1.ListView1.FocusedItem.SubItems(0).Text を記載してみたものの、コンパイルエラーが出てしまいます。 (スイマセン、あまり意味が分かっていないで書きました) リストビューで選択した項目を別のユーザーフォームに 反映させるにはどうしたら良いでしょうか? どなたかヒントをいただけると助かります。

  • エクセルで検索した場所へ自動でジャンプする方法

    エクセルで検索した場所へ自動でジャンプする方法はありますか?また、項目ごとに保存する方法は有りますか? 1、このシートは、コードを矢印の所に入力すると、規格一覧シートのデータを各項目に表示出来る様にしました。 で、修正したい項目セルを指定した時に、規格一覧シートを選択した場合同データセルにジャンプ出来る方法とか有るのでしょうか?また、VBAのボタンで検索とかで同じように検索出来る方法は有りますか? 2、このシートは項目にデータを表示させる様に関数を入れましたが、VBAで検索ボタンにコードを登録し、各項目にデータ表示 させ登録ボタンで規格一覧シートに登録させる方法は有りますか?なお規格一覧シートはこのようになっています。 ........A......... B....... C 1 コード 品目 規格 2 1234 いちご 果物 3 3456 キャベツ 野菜 よろしくお願いします。

  • 条件を満たす場合のみ計算、満たさない場合はそのまま

    Excel2010です。 Sheet2にデータを貼り付けSheet1で集計を行うファイルを作成しています。 Sheet1の集計表は 項目|6/1|6/2|6/3|6/4|6/5|・・・ 林檎|001|000|000|000|003|・・・ 蜜柑|000|001|000|001|000|・・・ 巨峰|000|001|000|000|000|・・・ Sheet2のデータは 2011/06/01|林檎| 2011/06/02|蜜柑| 2011/06/02|巨峰| 2011/06/04|蜜柑| 2011/06/05|林檎| 2011/06/05|林檎| 2011/06/05|林檎| 上記のような状態になっています。 集計自体は関数を入れれば簡単にできるのですが、 今回やりたいのは、 Sheet2にある日付だけ再計算し、 Sheet2に無い日付に関しては値をそのままにしておく。 という関数またはVBAです。 理由はいくつかあるのですが、 ■全データを貼り付けると重いのでできるだけ1日(当日)分にしたい ■当日分にしてしまうと集計し忘れた日の処理が大変 の2点が主な理由です。 これができれば集計が必要な日のデータだけ吐き出してSheet2に貼り付ければ 必要な集計が行える形になります。 何か良い方法はありますでしょうか。よろしくお願いいたします。