Мне нужно рассчитать количество месяцев между двумя датами в Excel.
Если день начальной даты меньше 2, то этот месяц считается за 1. Если число начальной даты больше или равно 2, то этот месяц не засчитывается.
Датой начала является любая дата, указанная пользователем. Дата окончания всегда 31.12.2023.
Если дата начала 01.05.2023, то номер месяца равен 8 (потому что 1 мая меньше 2) Если дата начала 02.08.2023, то номер месяца равен 4 (поскольку 2 августа больше (или равно) 2).
Формула:
=IF(DAY(A1)<2; (IF(DAY("31.12.2023") >= DAY(A1); (YEAR("31.12.2023") - YEAR(A1)) * 12 + MONTH("31.12.2023") - MONTH(A1) + 1; (YEAR("31.12.2023") - YEAR(A1)) * 12 + MONTH("31.12.2023") - MONTH(A1))); IF(DAY("31.12.2023") >= DAY(A1); (YEAR("31.12.2023") - YEAR(A1)) * 12 + MONTH("31.12.2023") - MONTH(A1) + 1; (YEAR("31.12.2023") - YEAR(A1)) * 12 + MONTH("31.12.2023") - MONTH(A1))-1)
Это работает, но это довольно огромная формула. Можно ли упростить или использовать более эффективный способ? (Я не могу использовать DateDif, поскольку наши версии Office не поддерживают эту функцию. Я не могу использовать макросы VBA.
Я сомневаюсь, что DATEDIF не поддерживается вашей версией Excel. Он работает в Excel 2013 и более поздних версиях, однако помощник по формулам не отображается. Вам необходимо ввести формулу вручную.
Спасибо. Да не было никакого намека и я думал что оно не поддерживается.
@ScottCraner - какова ситуация, если комментарий является правильным решением (должен ли он когда-либо быть опубликован как соль или оставлен в формате комментария)? Ты прав - и я не могу придумать никакого улучшения, учитывая экономность... опубликуй это, приятель.
@ JB-007, если я комментирую, это обычно означает, что у меня нет времени на формальный ответ, и у меня нет проблем, если кто-то захочет превратить это в формальный ответ. Под формальным ответом я подразумеваю объяснение того, что делает формула, и другую необходимую информацию.
@ScottCraner круто, но, думаю, я пытаюсь выяснить: каково должно быть соглашение в таких случаях? т. е. другие не могут воспроизвести ваше решение в блоке ответов, это просто отстой - так можно ли просто оставить ответьте в разделе комментариев (таким образом оставляя вопрос «без ответа» в фильтрах и т. д. и не позволяя другим пользователям легко определить, какое решение лучше всего, если у них есть аналогичный запрос? Мне просто кажется, что если вы ввели именно то, что ввели в разделе комментариев, но в блоке ответов - этого будет достаточно, приятель, пожалуйста, не поймите меня неправильно - я не критикую, просто комментирую.
Оказалось, что DateDif поддерживается большинством версий Excel. Просто подсказка не отображается.
С помощью DateDif:
=IF(DAY(A1)<2; DATEDIF(A1; $E$1; "m")+1; DATEDIF(A1; $E$1; "m"))
Где $E$1 настроен на «31.12.2023» или любую другую дату.
=(2023-YEAR(A1-1))*12 + 12-MONTH(A1-1)