假设我有以下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
我是使用Loop和Row-By-Row技术完成的。寻找一种方法,如果它可以通过列级减法直接完成。说ColB-ColA - > COLC。整个操作应该一次进行。结果应该来 “hh:mm:ss” 。
CODE
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&lt; - ColC1 + ColC2 + ... + ColCN。
答案 0 :(得分:2)
使用范围对象,我可以一次在范围内的所有单元格上设置公式
range("C1:C10").Formula="=B1-A1"
它还将根据正常复制riles调整公式以进行绝对寻址。
e.g。在上面的示例中,C10将为=B10-A10
。如果我把公式设为“= B1- $ A $ 1”那么C10就是=B10-$A$1
答案 1 :(得分:0)
您可以从另一个中减去一个日期,然后设置单元格的格式:
'Within the Do..While loop
Dim cell
Set cell = objSheet4.Cells(intRow4,11)
cell.Value = Date2 - Date1
cell.NumberFormat = "hh:mm:ss"