プロが教えるわが家の防犯対策術!

Excel2013 マクロをご指南ください。

A列からZ列までデータがあります。
最終行は常に変動します。

E列に日付。Z列に時刻。

全データの中で
E列の日付で最も古い日付(同じ日付あり) 且つ 
Z列の時刻で6:00:00(6時)以前に合致する行を削除する
マクロをご教示ください。

A 回答 (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
    • good
    • 0
この回答へのお礼

気にして頂いて、ありがとうございます。
何かが違うと思いつつも、返信出来ずに
試行錯誤してました。
Minに変えたら出来ました。

お礼日時:2015/01/12 23:46

こんばんは!


一例です。

データは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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!