- ベストアンサー
条件に合致した行を削除
Excel2013 マクロをご指南ください。 A列からZ列までデータがあります。 最終行は常に変動します。 E列に日付。Z列に時刻。 全データの中で E列の日付で最も古い日付(同じ日付あり) 且つ Z列の時刻で6:00:00(6時)以前に合致する行を削除する マクロをご教示ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 前回は勘違いしていました。 >E列の日付で最も古い日付(同じ日付あり) とはシリアル値の最小値ですね! (前回のコードはもっとも新しい日付にしていました) ↓のコードに変更してください。 Sub Sample2() Dim lastRow As Long, myMin As Long '★変数の変更 lastRow = ActiveSheet.UsedRange.Rows.Count Range("E:E").Copy Range("AA1") Range("AA:AA").NumberFormatLocal = "G/標準" myMin = WorksheetFunction.Min(Range("AA:AA")) '★MAX関数をMIN関数に変更 With Rows(1) .AutoFilter field:=27, Criteria1:=myMin '★ .AutoFilter field:=26, Criteria1:="<=6:00" End With On Error Resume Next '←念のため Range(Cells(2, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeVisible).EntireRow.Delete shift:=xlUp Range("AA:AA").Delete ActiveSheet.AutoFilterMode = False End Sub どうも失礼しました。m(_ _)m
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 データはZ列までだとします。 (AA列を作業用の列として使用しています。) ※ E列の日付をAA列にコピー&ペーストし、シリアル値に直してその列でオートフィルタを掛けています。 Sub Sample1() Dim lastRow As Long, myMax As Long lastRow = ActiveSheet.UsedRange.Rows.Count Range("E:E").Copy Range("AA1") Range("AA:AA").NumberFormatLocal = "G/標準" myMax = WorksheetFunction.Max(Range("AA:AA")) With Rows(1) .AutoFilter field:=27, Criteria1:=myMax .AutoFilter field:=26, Criteria1:="<=6:00", Operator:=xlAnd End With On Error Resume Next '←念のため Range(Cells(2, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeVisible).EntireRow.Delete shift:=xlUp Range("AA:AA").Delete ActiveSheet.AutoFilterMode = False End Sub こんな感じではどうでしょうか?m(_ _)m
お礼
気にして頂いて、ありがとうございます。 何かが違うと思いつつも、返信出来ずに 試行錯誤してました。 Minに変えたら出来ました。