Страницы: 1
RSS
Количество полных календарных месяцев/дней между датами
 
Добрый день, Ув. Форумчане!

В очередной раз обращаюсь на форум за помощью.
Есть две даты D1 и D2. Необходимо определить сколько полных календарных месяцев между этими датами, а точнее количество дней в этих месяцах.
Нашел следующую формулу: =РАЗНДАТ(КОНМЕСЯЦА(D1;0)+1;КОНМЕСЯЦА(D2;-1)+1;"d"). Формула работает, в принципе, как нужно.
Как тоже самое реализовать на VBA?
Возможно у кого-то есть готовое решение. Буду благодарен за совет.
Изменено: Alexey0185 - 06.12.2018 10:28:03
 
Правила: файл-пример.
В теме:
Цитата
Alexey0185 написал: Количество полных календарных месяцев между датами
а в сообщении:
Цитата
Alexey0185 написал: а точнее количество дней в этих месяцах
Вы определитесь, что именно Вам нужно.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Пример во вложении. Требуется:
а) кол-во полных календарных месяцев
б) кол-во дней в этих месяцах
 
Поиск.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
К сожалению, функция DateDiff возвращает разницу месяцев / дней без учета календарных месяцев.
Т.е. между 30.09.2018 и 06.12.2018 - возвращает 67 дней, а требуется 61 день (октябрь - 31 + ноябрь - 30)
 
Скрытый текст

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Огромное спасибо!
Работает.
 
Код
Sub jjj_cDateDiff()
    Dim dtTmp As Date
    Dim dtStart As Date: dtStart = [A1]
    Dim dtEnd As Date: dtEnd = [A2]
    Debug.Print dtStart, dtEnd,

Debug.Print Abs(DateDiff("d", dtEnd - Day(dtEnd) + 1, DateAdd("m", 1, dtStart) - Day(DateAdd("m", 1, dtStart)) + 1))


End Sub
По вопросам из тем форума, личку не читаю.
 
А вот последний макрос отрабатывает некорректно.
Например для 01.12.2018  и  06.12.2018  результат 31 день, а должно быть 0 дн.
 
Alexey0185,  
Цитата
Alexey0185 написал:
Нашел следующую формулу: =РАЗНДАТ(КОНМЕСЯЦА(D1;0)+1;КОНМЕСЯЦА(D2;-1)+1;"d"). Формула работает, в принципе, как нужно.
но ведь и она не считает корректно :-)
По вопросам из тем форума, личку не читаю.
 
Согласен :)
Формулу также следуют доработать.
Большое спасибо за помощь и уделенное время!
Страницы: 1
Наверх