Excel 在vba中查找时差

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

我想找出一个范围内的时差。我尝试了下面的代码,它没有以秒为单位返回时间差,但它只在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.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范围内。

总结评论:

  • 您可以使用公式来执行此操作,无需在此处使用
    DateDiff
    。1天=1,一天有86400秒
  • 您可以将公式写入整个范围,而无需循环:

总结评论:

  • 您可以使用公式来执行此操作,无需在此处使用
    DateDiff
    。1天=1,一天有86400秒
  • 您可以将公式写入整个范围,而无需循环:

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