Excel 在vba中查找时差
我想找出一个范围内的时差。我尝试了下面的代码,它没有以秒为单位返回时间差,但它只在D列的第一行到第四行之间生成一个值“0”Excel 在vba中查找时差,excel,vba,Excel,Vba,我想找出一个范围内的时差。我尝试了下面的代码,它没有以秒为单位返回时间差,但它只在D列的第一行到第四行之间生成一个值“0” Dim StartDate As Date, EndDate As Date Dim LastRowOfB As Long, LastRowOfD As Long Dim ColumnBRngData As Range, ColumnDRngData As Range LastRowOfB = ActiveSheet.Cells(Rows.C
Dim StartDate As Date, EndDate As Date
Dim LastRowOfB As Long, LastRowOfD As Long
Dim ColumnBRngData As Range, ColumnDRngData As Range
LastRowOfB = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
LastRowOfD = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
Set ColumnBRngData = ActiveSheet.Range("B4:B" & LastRowOfB)
Set ColumnDRngData = ActiveSheet.Range("D4:D" & LastRowOfD)
For i = 4 To LastRowOfB
StartDate = ActiveSheet.Cells(i, 2).Value
EndDate = ActiveSheet.Cells(i + 1, 2).Value
ColumnDRngData.Cells = (StartDate - EndDate) * 86400
Next i
我希望时间差显示在D4和ownwards范围内。总结评论:
- 您可以使用公式来执行此操作,无需在此处使用
。1天=1,一天有86400秒DateDiff
- 您可以将公式写入整个范围,而无需循环:
总结评论:
- 您可以使用公式来执行此操作,无需在此处使用
。1天=1,一天有86400秒DateDiff
- 您可以将公式写入整个范围,而无需循环:
ColumnDRngData=…
正在将DateDiff
的结果写入整个范围,而不是单个单元格。注意,我将其更改为ColumnDRngData.Cells,但它确实生成了时间差值否,这无法解决问题。您的工作表的设置是什么?您可以添加屏幕截图、样本数据和预期结果吗?您所说的设置是什么意思?这是不是->我的数据标题从第3行开始。时间是2021年2月10日下午1:34:28。。。d列是我想粘贴时间差的地方,预期的结果是什么?不清楚为什么需要2个循环。请在屏幕截图中包含预期结果。还要确保B列中的格式允许查看秒部分。ColumnDRngData=…
正在将DateDiff
的结果写入整个范围,而不是单个单元格。注意,我将其更改为ColumnDRngData.Cells,但它确实生成了时间差值否,这不会解决问题。您的工作表的设置是什么?您可以添加屏幕截图、样本数据和预期结果吗?您所说的设置是什么意思?这是不是->我的数据标题从第3行开始。时间是2021年2月10日下午1:34:28。。。d列是我想粘贴时间差的地方,预期的结果是什么?不清楚为什么需要2个循环。请在屏幕截图中包含预期结果。还要确保B列中的格式允许查看秒部分。
With ActiveSheet
Dim LastRowOfB As Long
LastRowOfB = .Cells(.Rows.Count, "B").End(xlUp).Row
.Range("D4:D" & LastRowOfB - 1).Formula = "=ROUND((B5-B4)*86400,0)"
End With