Excelで日付付きのデータを管理していると、「最近のデータだけを抽出したい」という場面がよくあります。
例えば、過去7日間の売上だけ表示する、30日以内の申込だけ確認するなど、期間を絞った確認作業は非常に多くの現場で行われています。
こうした作業を手動で毎回フィルター設定するのは面倒です。
そこで、マクロで「◯日以内のデータだけを表示する処理」を自動化してみましょう。
基本の考え方とサンプルコード
ここでは、A列に日付データがあると仮定して、過去7日以内のデータのみを表示するマクロを紹介します。
次のようにコードを書きます。
Sub ShowRecentData()
Dim ws As Worksheet
Dim i As Long
Dim limitDate As Date
Dim today As Date
Set ws = ActiveSheet
today = Date
limitDate = today - 7
' 1行目は見出しとし、2行目からチェック
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' A列の日付が limitDate より前なら非表示
If ws.Cells(i, 1).Value < limitDate Then
ws.Rows(i).EntireRow.Hidden = True
Else
ws.Rows(i).EntireRow.Hidden = False
End If
Next i
MsgBox "過去7日以内のデータだけを表示しました。"
End Sub
このコードは、現在の日付から7日引いた日付を「基準」として、それよりも古い日付の行を非表示にしています。
解説
Dateは、今日の日付を取得するVBA関数です。today - 7によって、「7日前の日付」が自動で求まります。Rows(i).EntireRow.Hidden = Trueで行を非表示にできます。- 1行目が見出しなら、2行目以降から繰り返し処理するようにします。
処理後は、過去7日以内のデータだけが見える状態になります。
表示する日数を入力できるようにする
実際の業務では、「7日」「30日」など、条件を変えることもよくあります。
そこで、日数を入力する仕組みも加えてみます。
Sub ShowRecentByInput()
Dim ws As Worksheet
Dim i As Long
Dim limitDate As Date
Dim today As Date
Dim days As Variant
days = InputBox("何日以内のデータを表示しますか?", "表示日数の入力")
If Not IsNumeric(days) Then
MsgBox "数値を入力してください。", vbExclamation
Exit Sub
End If
Set ws = ActiveSheet
today = Date
limitDate = today - CLng(days)
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
If ws.Cells(i, 1).Value < limitDate Then
ws.Rows(i).EntireRow.Hidden = True
Else
ws.Rows(i).EntireRow.Hidden = False
End If
Next i
MsgBox "過去" & days & "日以内のデータだけを表示しました。"
End Sub
このようにすれば、ユーザー自身が必要に応じて日数を設定できるようになります。
入力欄を設けるメリット
- 担当者が自由に条件を調整できる
- 複数ファイルで同じコードを再利用しやすい
- 「固定化されたマクロ」ではなく、「柔軟に使えるマクロ」になる
実装するメリット
このマクロを業務に組み込むことで、次のようなメリットがあります。
- 過去データをすばやく確認できる
- 日付のフィルター設定の手間がなくなる
- 見やすく・効率的なデータ管理が可能になる
- 不要な情報を非表示にして作業の集中力を高められる
特に、毎日新しいデータが追加されるような運用では、「新しいデータだけ見る」という仕組みがとても有効です。
また、行を非表示にするだけなので、元のデータは削除されず、いつでも元に戻せるという安心感もあります。
まとめ
日付付きデータの管理では、「◯日以内だけ見たい」「古いのは非表示にしたい」と感じる場面が頻繁にあります。
そうしたとき、今回のようなマクロを使えば、一瞬で必要な情報だけを絞り込むことが可能です。
初期のうちは「7日」など固定でもよいですが、さまざまなパターンがある場合には、入力方式にして柔軟性を持たせるのがおすすめです。
マクロで環境を整えることで、作業のスピードと正確さの両方を手に入れましょう。
