#vba #excel
#vba #excel
Вопрос:
Я новичок в VBA. Я хочу получить разницу между текущей датой и заданной датой от пользователя. Как я могу это решить? Когда я нажимаю кнопку Вычислить точку, она показывает #NAME?
Вот мой код:
Private Sub Sum_Click()
Dim LastRow As Long
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Range("F6:F" amp; LastRow).Formula = "=DateDiff(""y"", Now, c6)"
End Sub
Комментарии:
1. Datediff — это функция vba, а не функция Excel. Используйте
Range("F6:F" amp; LastRow).Formula = "= Now-c6"
вместо2. Я пробовал это. Но это дало 10146 вместо 27. Как я могу это решить?
3. какое значение у вас есть в ячейке C6?,
Ответ №1:
Range("F6:F" amp; LastRow).Formula = "=Text(Now()-C6, "y")"
должен это сделать.
Обратитесь к текстовой функции для других параметров форматирования.
В частности:
Комментарии:
1. Нет проблем, просто имейте в виду, что если вы хотите получить разницу между
Now
и некоторой датой в будущем, вы должны сначала указать будущую дату, чтобы избежать менее интересных результатов. В этом отношенииDateDif
это более надежный вариант, и вам не придется его оборачиватьtext
.
Ответ №2:
Поскольку вам нужна разница в годах, вы можете использовать DateDif
Range("F6:F" amp; LastRow).Formula = "=DateDif(c6, Today(), ""y"")"
Комментарии:
1. Я хочу добавить к этому еще одну разницу в дате. Как я могу это сделать? Я пробовал это: диапазон («F6: F» amp; lastRow). Formula = «= DateDif(c6, Today(), «»y»») DateDif(E6, Today(), «»y»»)» Но не сработало. Что мне делать?
2. Фраза «не сработало» на самом деле нам вообще ничего не говорит. Что произошло? Какую выгоду вы получаете от сложения двухлетних значений вместе?
3. Вы уверены, что обе ячейки содержат действительные даты и что они обе раньше сегодняшней даты?