Uncategorized

ある日付以前を含む行を削除するマクロ

Sub DeleteRowsBeforeDate()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim targetDate As Date
Dim dateColumn As Range
Dim dateColumnIndex As Long

' ワークシートを設定
Set ws = ThisWorkbook.Sheets("sheet2") ' シート名を必要に応じて変更

' 日付が入力されている列名を検索(ここでは "開始日")
On Error Resume Next
Set dateColumn = ws.Rows(1).Find("登録月", LookIn:=xlValues, LookAt:=xlWhole)
On Error GoTo 0

' 列が見つからない場合のエラーハンドリング
If dateColumn Is Nothing Then
    MsgBox "列名 '登録月' が見つかりませんでした。"
    Exit Sub
End If

' 列番号を取得
dateColumnIndex = dateColumn.Column

' 最終行を取得
lastRow = ws.Cells(ws.Rows.Count, dateColumnIndex).End(xlUp).Row

' 基準日を入力(yyyy/mm/dd 形式で)
targetDate = InputBox("基準日を yyyy/mm/dd 形式で入力してください")

' 日付が指定日以前の行を逆順に削除
For i = lastRow To 2 Step -1 ' ヘッダーがある場合、1行目を避ける
    If IsDate(ws.Cells(i, dateColumnIndex).Value) Then
        If ws.Cells(i, dateColumnIndex).Value <= targetDate Then
            ws.Rows(i).Delete
        End If
    End If
Next i

End Sub