VBA:表单上的双重filter,如何在两个特定时间间隔之间过滤数据

我需要VBA代码从某个时间窗口过滤出报警日志。 警报在某些物体上出现并清除。 我需要脚本在两个指定时间之间过滤掉警报(例如,在1AM之后/之后出现并在3AM之前清除的那些警报),并将过滤的数据复制到另一个表单。 请参阅附件图片。

查看给定的图像,其中显示了所有的警报日志。 在这里输入图像说明

我不得不修改你的数据,因为没有提出和清除时间符合你的标准。

 Option Explicit Sub betweenTimes() With Worksheets("Sheet5") If .AutoFilterMode Then .AutoFilterMode = False With .Range(.Cells(2, "A"), .Cells(.Rows.Count, "G").End(xlUp)) 'as hardcoded values '.AutoFilter field:=2, Criteria1:=">=" & Format(Date + TimeSerial(1, 0, 0), "yyyy-mm-dd hh:mm:ss") '.AutoFilter field:=3, Criteria1:="<=" & Format(Date + TimeSerial(3, 0, 0), "yyyy-mm-dd hh:mm:ss") 'as values from I3:J3 .AutoFilter field:=2, Criteria1:=Format(.Parent.Cells(3, "I").Value2, "\>\=yyyy-mm-dd hh:mm:ss") .AutoFilter field:=3, Criteria1:=Format(.Parent.Cells(3, "J").Value2, "\<\=yyyy-mm-dd hh:mm:ss") With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0) If CBool(Application.Subtotal(103, .Cells)) Then Union(.Cells, .Cells(1, "XFD")).Copy Destination:=Worksheets("Sheet6").Cells(2, "A") End If End With End With If .AutoFilterMode Then .AutoFilterMode = False End With End Sub 

在这里输入图像说明