2017-03-31 161 views
1
DateDiff("m", "06/14/1982", "09,01,1982") = 3 

A1 = 06/14/1982 
A2 = 09/01/1982 
=DATEDIF(A1, A2, "m") = 2 

如果我需要DateDiff呢,我怎么做到这本轮下跌DATEDIF让VBA DATEDIF的行为,并四舍五入Excel等DATEDIFF

+2

你试过'回合()' ?或'RoundDown()'?此外,你的格式为代码只是工作表公式?你需要VBA? – BruceWayne

+0

@BruceWayne你会回合什么? 'DateDiff'返回'Long'(可能是'Variant/Long') –

回答

3

您可以使用VBA中的Evaluate函数。但是,以这种方式处理日期时,您需要确保公式所看到的值是与日期对应的数字,而不是VBA日期数据类型。如果日期存储在工作表单元格,你会做这样的事情:

Evaluate("DATEDIF(" & [a1].Value2 & "," & [a2].Value2 & ", ""m"")") 

如果日期被存储在VBA变量日期,则:

Evaluate("DATEDIF(" & CDbl(DT1) & "," & CDbl(DT2) & ", ""m"")") 
+0

我不知道评估吗?完美的作品,谢谢。 –

1
= Application.WorksheetFunction.RoundDown(DateDiff("d", a1, a2)/30, 0) 
+0

随着'A2:= 9/1/1990','DATEDIF►98','DateDiff►99'和你的函数►'100' –