【Excelマクロ】今日のデータだけを自動抽出して別シートに移動するマクロ

“今日”のデータをすぐに取り出したい

日々の業務で、売上や対応履歴、申請内容などをExcelに記録している方は多いと思います。

その中で「今日登録されたデータだけを確認したい」というニーズはよくあります。

たとえば、

  • 日次の売上集計をしたいとき
  • 本日の申請内容をピックアップしたいとき
  • 1日の対応状況だけを抽出したいとき

こういった場合、毎回フィルターを使って手作業でコピー&貼り付けをしていては手間もかかりますし、ミスも増えます。

そこで今回は、“今日の日付”に一致する行だけを自動で抽出し、別シートに移すマクロを紹介します。

実装するマクロの全体像

このマクロでは次のような処理を行います。

  1. 元データシートから、今日と一致する日付の行を探す
  2. 抽出した行を、新しく作成した”抽出結果”シートにコピー
  3. 見出し行も含めてコピーする

具体的なコードと解説

まずは、実際のコードを見てみましょう。

Sub CopyTodayData()

    Dim sws As Worksheet
    Dim dws As Worksheet
    Dim today As Date
    Dim i As Long, j As Long
    Dim lastRow As Long
    
    Set sws = ThisWorkbook.Sheets("データ")
    today = Date

    ' 出力先シートがあれば削除し、再作成
    Application.DisplayAlerts = False

    On Error Resume Next
    ThisWorkbook.Sheets("今日データ").Delete
    On Error GoTo 0

    Application.DisplayAlerts = True

    Set dws = ThisWorkbook.Sheets.Add
    dws.Name = "今日データ"

    ' 最終行の取得
    lastRow = sws.Cells(sws.Rows.Count, 1).End(xlUp).Row

    ' 見出しをコピー
    sws.Rows(1).Copy Destination:=dws.Rows(1)
    j = 2 ' 貼り付け先の行の初期設定

    ' 日付が今日の行を抽出(A列に日付が入っている前提)
    For i = 2 To lastRow
        If IsDate(sws.Cells(i, 1).Value) Then
            If sws.Cells(i, 1).Value = today Then
                sws.Rows(i).Copy Destination:=dws.Rows(j)
                j = j + 1
            End If
        End If
    Next i

    MsgBox "今日のデータを抽出しました。"

End Sub

コードの解説

  • Date 関数は、システムの日付(今日)を取得します。※todayは変数であり、これで「今日」という日付を表すことはできません。あくまで、変数です。
  • IsDate で、セルの値が日付であるかを確認します。
  • sws.Rows(i).Copy を使って、行全体を丸ごとコピーします。
  • 出力先シートが存在する場合は一度削除して、新たに作成し直します。

このマクロでは、A列に日付があることを前提としています。実際のデータ構成に応じて調整してください。

「Date」が今日という日を表すVBA上の関数です。

実装のメリット

このマクロを導入することで、次のようなメリットがあります。

  • 日付フィルターの手作業が不要になる
  • 抽出ミスがなくなる
  • 瞬時に「今日だけの一覧」が確認できる
  • 日報や報告資料の作成が効率化される

まとめ

「今日のデータだけを確認したい」というニーズは多くの業務で発生します。

この処理をVBAで自動化しておくことで、

  • 作業効率が格段にアップ
  • 毎日のルーティンが安定化
  • 属人化せずに業務を仕組み化

という効果が得られます。

単なる手間の削減だけでなく、業務の見える化やスピードアップにもつながりますので、ぜひ活用してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール