0

假设我有下面的 excel 表,我需要找到它们之间的差异,结果需要放回另一列:

      ColA                      ColB                    ColC

9/3/2012  8:31:59 AM      09/17/2012  6:45:56 PM        Result
9/4/2012  8:31:59 AM      10/17/2012  6:45:56 PM        Result

我使用循环和逐行技术做到了。寻找一种方法,如果它可以直接通过列级减法完成。说 ColB-ColA -> ColC。整个操作应该一次执行。结果应该是"hh:mm:ss"

代码

  IntRow4=2
  Do While objSheet4.Cells(IntRow4,1).Value <> ""

    If objSheet4.Cells(IntRow4,9).Value <> "Open" Then

       Date1=objSheet4.Cells(IntRow4,7).Value
       Date2=objSheet4.Cells(IntRow4,8).Value
       objSheet4.Cells(IntRow4,11)=TimeSpan(Date1,Date2)

   End If

  IntRow4=IntRow4+1
  Loop

更新

      ColA1    ColB1      ColC1       ColA2    ColB2     ColC2   .....   ColAN    ColBN    ColCN    TotaltimeDurtion
      Date     Date     11:25:20      Date     Date     10:25:00          Date    Date     11:25:20      ?

在这里我只显示了一行,但可以有多个或 N 行。我需要做的是,我想添加持续时间并将它们放到最后一列“TotaltimeDurtion”。但最后一列不能是固定的。每行的所有列都不需要值,但永远不会是空的。我们也可以在列级别执行此操作。这里的持续时间是 hh:mm:ss 格式或根据您的说明 [h ]:mm:ss。TotaltimeDurtion <- ColC1 + ColC2 + ...+ ColCN。

4

2 回答 2

2

使用范围对象,我可以一次在一个范围内的所有单元格上设置公式

range("C1:C10").Formula="=B1-A1"

它还将根据绝对寻址的正常复制规则调整公式。

例如,在上面的例子中,C10 将是=B10-A10. 如果我将公式设为“=B1-$A$1”,那么 C10 将是=B10-$A$1

于 2012-12-18T16:13:03.177 回答
0

您可以从另一个日期中减去一个日期,然后设置单元格的格式:

'Within the Do..While loop
Dim cell
Set cell = objSheet4.Cells(intRow4,11)
cell.Value = Date2 - Date1
cell.NumberFormat = "hh:mm:ss"
于 2012-12-18T08:21:18.997 回答