Excelで日付ごとに別シートの数値を自動でB列に入力したい場合、関数だけでは制限がありますが、VBA(マクロ)を使うことで指定した時間や日付ごとに自動入力が可能です。この記事では、初心者でもわかりやすく手順を解説します。
関数だけでできる基本の方法
単純にリアルタイムで別シートの値を参照する場合は、B列に以下のような参照式を入力できます。
=別シート名!C1
しかし、この方法では数値は常に最新の値を表示するだけで、過去の日付に自動で固定されることはありません。
VBAを使った自動入力の仕組み
過去の日付にその日の値を固定してB列に入力したい場合は、VBAを使ってマクロを作成します。例えば、日付ごとに別シートのセル値をコピーするコードは以下のようになります。
Sub DailyValueCopy()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
If Cells(i, "A").Value = Date Then
Cells(i, "B").Value = Worksheets("参照シート").Range("C1").Value
End If
Next i
End Sub
このマクロを毎日実行することで、その日の値をB列に自動で入力できます。
タスクスケジューラで毎日実行する方法
マクロを自動で実行したい場合は、Excelを開いてマクロを動かす必要があります。Windowsのタスクスケジューラと組み合わせると、指定した時間にExcelファイルを開き、マクロを実行させることが可能です。
具体的には、マクロ有効ブックを開いたときに自動でDailyValueCopyマクロが動くようにWorkbook_Openイベントに記述します。
注意点とベストプラクティス
VBAマクロを使用する場合は、セキュリティ設定でマクロを有効にする必要があります。また、参照するセルやシート名を間違えないように注意してください。
定期的に値をコピーするためには、タスクスケジューラの設定やマクロ内の日付条件を正確に設定することが重要です。
まとめ
ExcelでA列の日付ごとに別シートの数値をB列に自動入力するには、関数だけでは限界があるため、VBAマクロを使うのが効果的です。マクロを設定し、タスクスケジューラで毎日実行することで、日付ごとの数値を自動で記録でき、効率的なデータ管理が可能になります。


コメント