我希望有人可以帮助我解决该问题。我正在尝试删除VBA的00:00:00-22:59:59之间的所有值。
我使用以下方法将时间与日期分开了:
ActiveCell.FormulaR1C1 = "=RIGHT(RC[1],8)"
例如,这给我留下了00:27:37。
我已经搜索了很多答案,但是找不到合适的解决方案。我尝试使用以下方法,但不起作用:
Dim lr As Long, i As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
For i = lr To 1 Step -1
If IsNumeric(Cells(i, "B")) And _
Cells(i, "B").Value2 < TimeSerial(23, 0, 0) And _
Cells(i, "B").Value2 <> "" Then
Rows(i).EntireRow.Delete
End If
Next i
谢谢。
答案 0 :(得分:2)
在= RIGHT公式使底部的公式正确工作后,建议* 1。
谢谢,请参阅下面的解决方案。
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B2").Select
ActiveCell.FormulaR1C1 = "=RIGHT(RC[1],8)*1"
Selection.AutoFill Destination:=Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row)
Dim lr As Long, i As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
For i = lr To 1 Step -1
If IsNumeric(Cells(i, "B")) And _
Cells(i, "B").Value2 < TimeSerial(23, 0, 0) And _
Cells(i, "B").Value2 <> "" Then
Rows(i).EntireRow.Delete
End If
Next i
答案 1 :(得分:2)
Excel中的日期和时间是数字值,其中日期表示为整数(自1900年1月1日以来的天数),时间表示为数字的小数部分,范围为0(00 :00)和<1(24:00)
因此您可以通过
隔离日期/时间值组合的时间vTime = vDateTime - Int(vDateTime)
然后,您寻找的时间是> = 23:00,以数字形式表示的时间是> = 23/24
示例:
Sub Find23()
Dim vTime As Date, vDateTime As Date
vDateTime = #7/17/2018 11:00:00 PM#
Debug.Print vDateTime
vTime = vDateTime - Int(vDateTime)
Debug.Print vTime
If vTime >= 23 / 24 Then
Debug.Print "it was late in the evening ..."
' do your stuff here
End If
End Sub
答案 2 :(得分:0)
我正在尝试删除VBA的00:00:00-22:59:59之间的所有值。
将数据保留23小时会更容易吗?
Dim lr As Long, i As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
For i = lr To 1 Step -1
If IsNumeric(Cells(i, "B")) and not isempty(Cells(i, "B")) then
if hour(Cells(i, "B").Value2) <> 23 then
Rows(i).EntireRow.Delete
End If
End If
Next i