2017-03-31 34 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' –