У меня есть быстрый вопрос. Есть ли решение использовать функцию DATEDIF в VBA. Это скрытая функция в Excel. Я не спрашиваю о функции DATEDIFF с двумя «F» в конце. Спасибо заранее.Функция Datedif в VBA
ответ
Вы можете использовать метод Evaluate
...
Evaluate("DATEDIF(A1,A2,""Y"")")
И да, вы можете использовать переменные ...
Sub TestEvaluateWithVariables()
Dim strVariable As String
Dim dateStartDate As Date
Dim dateEndDate As Date
dateStartDate = #9/1/2002#
dateEndDate = #11/30/2003#
strVariable = "DATEDIF(""" & dateStartDate & """,""" & dateEndDate & """,""YD"")"
Cells(3, 3) = Evaluate(strVariable)
End Sub
Bingo. Большое спасибо. –
Могу ли я использовать его с переменными? –
Мэтт - если этот ответ решает вашу проблему, вы должны отметить его как правильно, чтобы будущие люди с похожим вопросом определяли это как решение – Hambone
Это может быть не совсем ответ, но, видя, как он слишком длинный для комментария и по-прежнему имеет отношение к вашему использованию, я отправлю его.
Okey, например, у нас есть две разные даты. Первый - «2016-02-14», а второй - «2016-03-10». Функция DateDif будет return 0, что соответствует результату, но DateDiff вернет 1 вместо 0. DATEDIF («2016-02-14»; «2016-03-10»; «ym») и vba DATEDIFF («m »,„2016-02-14“,„2016-03-10“)
DateDiff
причина и DateDif
дает вам два различных значения в этом использовании, кажется, потому что один из них вычисляет разницу полный месяц и другой рассчитывает смещение самих месяцев, не обращая внимания на дни.
DateDiff
:
https://msdn.microsoft.com/en-us/library/b5xbyt6f(v=vs.90).aspx
Аналогично, возвращаемое значение для DateInterval.Month рассчитывается чисто от года и месяца частей аргументов
DateDif
:
https://msdn.microsoft.com/en-us/library/cc767548.aspx
«M» Число полных месяцев в периоде.
Я беру из этого, что DateDiff
возвращает количество, как далеко два месяца находится друг от друга (февраль и март всегда 1 месяц друга от друга, потому что не все равно, в какой день месяца вы входите в комплекте) в то время как DateDif
, кажется, подсчитывает количество дней, чтобы определить, достигнут ли «полный» месяц или нет.
Function DateDif(D1 As Date, D2 As Date, DDS$) As Integer
Dim DHi As Date, DLow As Date
Dim DifS$: DifS = "DATEDIF(" & Chr(34)
Dim dCom: dCom = Chr(34) & "," & Chr(34)
Dim DEnd: DEnd = Chr(34) & ")"
If D2 < D1 Then
DateDif = Evaluate(DifS & D2 & dCom & D1 & dCom & DDS & DEnd)
Else
DateDif = Evaluate(DifS & D1 & dCom & D2 & dCom & DDS & DEnd)
End If
End Function
'может быть стоит играть
- 1. DATEDIF эквивалент в PHP
- 2. Ошибка с DateDif в Excel
- 3. DATEDIF в диапазоне в Excel
- 4. Замена GoogleDoc для Excel = DATEDIF()?
- 5. Excel DateDif() или = NETWORKDAYS()
- 6. DATEDIF на основе критериев
- 7. DATEDIF formula; Да/Нет ответа
- 8. отсутствует) после списка аргументов DATEDIF
- 9. Преобразование DATEDIF в Excel для SQL DateDiff
- 10. VBA Функция
- 11. Функция SUMIFS в VBA
- 12. Функция IF в VBA
- 13. функция Будни в VBA
- 14. Функция совпадения в VBA
- 15. Функция DSum в vba
- 16. Функция заголовка в VBA
- 17. Offset Функция в VBA
- 18. Функция MATCH() в VBA
- 19. Euclidian distance VBA (функция транспонирования в VBA)
- 20. Инструкция DATEDIF в SharePoint не работает должным образом
- 21. Confused на Excel DATEDIF "YD" Option
- 22. Скрыть результат DATEDIF, если данные ячейки пустые
- 23. Функция DateAdd в excel-vba
- 24. Функция рабочего листа в VBA
- 25. Функция массива в Excel VBA
- 26. MIN IF Функция в VBA
- 27. Функция внутри функции в vba?
- 28. функция, вызывающая себя в vba
- 29. VBA Если функция ошибки
- 30. Функция VBA HasNextCell
Почему вы хотите использовать 'DateDif' вместо' DateDiff'? Они делают то же самое ... – ARich
Не так ли? Если бы они были, я бы не стал задавать такие вопросы, как этот :( –
Да, это так. Синтаксис отличается, но они делают то же самое. Так что опять же, почему вы хотите использовать [DateDif] (http: // www.techonthenet.com/excel/formulas/datedif.php) вместо [DateDiff] (http://www.techonthenet.com/excel/formulas/datediff.php)? – ARich