- 締切済み
エクセルVBA 今日の日付行を削除
はじめまして。 当日の日付の入った行を自動で削除したいのですが、 どなたかVBAで教えていただけますでしょうか。 ID 日付 23 2011/2/18→この行を削除 24 2011/2/18→この行を削除 26 2011/2/17 26 2011/2/18→この行を削除 25 2011/2/17 26 2011/2/16 25 2011/2/16 25 2011/2/18→この行を削除 ・ ・ ・ 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
既に出ているが 《第1) (1)ForNextで業ごとに繰り返す (2)その際上の業からやると削除行が業のとらえ方(ポインタ)に影響するので、下の方の行から削除すると 崩れ無くてよい。 ーー (第2) そのほかに、こんなとこに質問するまでも無く 操作をしてマクロの記録を採れば、コードはできるのではないですか。 操作は 範囲指定 データーフィルタ ▼をクリック 今日の日付を選ぶ 編集 行の削除 ーー Sub Macro3() Range("A2:C16").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=DateValue("2011/2/15") Selection.EntireRow.Delete Range("C12").Select End Sub ーー A1:C16の例 D16の16の最終行の察知はRange("65536").End(xlUp).Rowなどを使えば相対化できる。 B列は日付(日付シリアル値で入っていること) Criteria1:=DateValue("2011/2/15")はDateとか上記のような指定になる。 (第3) Findなどで該当行を見つけて行Deleteなども出来る
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ていますので、参考程度で・・・ B列に日付データが入っているとします。 Sub test() Dim i As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If Cells(i, 2) = DateValue(Now()) Then Rows(i).Delete (xlUp) End If Next i End Sub こんな感じではどうでしょうか?m(__)m
お礼
回答ありがとうございます。 非常にシンプルで分かりやすかったです。
- imo8001
- ベストアンサー率14% (26/179)
For Each c In Selection If c.Value = 比較したいデータ Then Rows(c.Row).Delete End If Next こんな感じになります 日付を扱う場合は 値、型 に注意です 任意のセルを指定し 単純にそこと比較するようにすれば一番簡単です
お礼
回答ありがとうございます。 比較データでは思いつきませんでした! ありがとうございます。m(__)m
お礼
詳細に回答いただき、ありがとうございます。 最終行の察知勉強になりました。