Как получить разницу между текущей датой и заданной датой из ячейки в VBA?

#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")" должен это сделать.

Обратитесь к текстовой функции для других параметров форматирования.

В частности:

Изображение из предоставленной ссылки на support.office.com

Комментарии:

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. Вы уверены, что обе ячейки содержат действительные даты и что они обе раньше сегодняшней даты?