• ベストアンサー

エクセルで日毎のデータの蓄積

シートBにその日のデータを入力し、そのデータをシートAに蓄積していきたいです。 手作業ならば、 1.入力されたシートBのその日のデータをコピー 2.シートAの同じ日付の行を探し、値のみペースト とするのでしょうが、これを自動化したいです。 セル参照だと、毎日、同じ行にデータが上書きされていくため 無理っぽいし、マクロを使わないとできませんか? コピーとペーストはできそうですけど、「同じ日付の行を探し」というところが難しそうだなぁと思いました。。。 すみませんが、よろしくお願いします。 シートA(データ蓄積用) 日付   データ 12/1   データ1 12/2 ・ ・ 12/31 シートB(データ入力用) 日付   データ 12/2   データ2 ↑日付が変われば、同じ行にデータを上書き

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

シート名「シートB」の シート名タブを右クリックして「コードの表示」 出てきたVBE画面にコピペします。 シートB の B2セルに書き込みをするとシート名「シートA」に書き込みをします。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim r, tr As Range Set tr = Target.Cells(1, 1) If tr.Address = "$B$2" Then   With Worksheets("シートA")   Set r = .Range("A:A").Find(tr.Offset(0, -1).Value, _         .Range("A65536"), xlFormulas, xlWhole)     If r Is Nothing Then       .Range("A65536").End(xlUp).Offset(1, 0).Value = tr.Offset(0, -1).Text       .Range("B65536").End(xlUp).Offset(1, 0).Value = tr.Value     Else       r.Offset(0, 1).Value = tr.Value     End If   End With End If End Sub

noname#66230
質問者

お礼

ありがとうございます。 Findを使って該当セルを探すのですね。 流れはわかりました。 もうちょっと勉強してみます。 今回は早速のご回答ありがとうございました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

ブックを保存する前に当日のデータ(データ2)をデータ蓄積用シートに書き込むようにしました。 マクロ中のシート名は実際の名前に変更してください(質問にあるとおりのシートA、シートBとしています)。また当日分のデータが書かれているセルアドレスがB2以外であれば、これも3行目を変更してください なお、データ蓄積用シートの日付はA列、データはB列としてマクロを書きました。違うのであれば補足してください。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim RES Const Adr As String = "B2" '← 当日のデータのセルアドレス With Worksheets("シートB")  RES = Application.Match(.Range(Adr).Offset(0, -1).Value * 1, _      Worksheets("シートA").Range("A1:A10000"), 0)  If IsError(RES) Then   MsgBox ("合致する日付が見つからないため" & Chr(13) & _        "本日のデータは書き込みできません")  Else   Worksheets("シートA").Cells(RES, "B") = .Range(Adr).Value  End If End With End Sub マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラ」の「ThisWorkBookを右クリック」→「コードの表示」で表示される画面にペーストして下さい。ブック保存時に自動実行されます。

noname#66230
質問者

お礼

丁寧なご回答ありがとうございました。 No.1さんのFindに対し、Matchを使うのですね。 参考にさせていただきます。 ありがとうございました。

関連するQ&A