我的目的是找出每一行之间的时间差距。它应该1秒钟1秒,但你会看到,直到11:40,有一个大的。例如,时间A3-A2 = B1。我已经解决了这个问题,我的代码如下。
它运行正常,但在B列的末尾,有一个很长的00:00:00列表。我想将列B的最后一个数字与列A匹配,这意味着列B和A应该具有相同的长度。最终00:00:00成千上万。
Sub CalculateTimeGap()
Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").Value = "Time"
Columns("A:A").NumberFormat = "hh:mm:ss"
Columns("B:B").Formula = "=A2-A1"
Range("B1").Value = "Time Difference(s)"
Columns("B:B").NumberFormat = "hh:mm:ss"
lRow = Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Time Time Difference(s)
11:28:37 00:00:01
11:28:38 00:00:01
11:28:39 00:00:01
11:28:40 00:11:35
11:40:15 00:00:01
11:40:16 00:00:01
11:40:17 00:00:01
11:40:18 00:00:01
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
我尝试在里面添加代码来删除00:00:00,但它没有用。
If Range("B").Value = "00:00:00" Then
'Range("B").Value.Delete
End If
答案 0 :(得分:0)
我认为在这里使用循环会更好
dim LR,i as double
LR=application.count(range("A:A"))
for i=1 to lr step 1
cells(i,2).value=cells(i+1,1).value-cells(i,1).value
next i
并保留代码的替代方法是:
Sub CalculateTimeGap()
Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").Value = "Time"
dim LR as variant
LR=application.count(range("A:A"))
Columns("A:A").NumberFormat = "hh:mm:ss"
Columns("B2:B"&LR).Formula = "=A2-A1"
Range("B1").Value = "Time Difference(s)"
Columns("B:B").NumberFormat = "hh:mm:ss"
lRow = Cells(Rows.Count, 1).End(xlUp).Row
End Sub
答案 1 :(得分:0)
您可以在B列中使用公式,而不是使用VBA
假设您的示例中的表位于A1,将=IF(ISBLANK(A3),"",A3-A2)
放在B2中并按照您的意愿向下复制