Функция Excel DATEDIF (с возможностью возврата количества месяцев) возвращает разные значения для двух пар значений даты, даже если даты находятся в одних и тех же месяцах.
В столбце C я использую =IF(A1="","-",DATEDIF($A1,$B1,"m")) + 1

    A            B         C
10-Nov-17    9-May-21     42
10-Nov-17   10-May-21     43

Мой вопрос:
Как заставить С2 вернуть 42?
Как заставить столбец C возвращать 42 не используя +1 в конце формулы?

3 ответа3

3

Если обе ячейки даты имеют одинаковую дату, результат равен 1. Результат возвращается к 2 в тот же день следующего месяца. Таким образом, с 10 ноября по 9 декабря возвращается 1, с 10 ноября по 10 декабря возвращается 2, а не 1. Тот же принцип применяется к вашим образцам данных.

Строка 1 - с 10-го по 9-й и возвращает 42, но строка 2 - с 10-го по 10-й, поэтому переходит к следующему числу, которое равно 43.

Вот как работает DateDiff.

Если вы хотите изменить возвращаемое значение, вам придется настроить формулу в соответствии с вашими личными правилами, как вы сделали, добавив 1.

2

Если вы хотите подсчитать календарные месяцы между двумя датами, вы можете сделать это, изменив каждую дату на первый день соответствующего месяца. Для этого вычтите день месяца из даты, а затем добавьте 1.

Таким образом, формула становится

=IF($A1="","-",DATEDIF($A1-DAY($A1)+1,$B1-DAY($B1)+1,"m"))
0

Согласно этому сайту, я должен изменить мою формулу на
=IF(A1="","-",DATEDIF($A1,$B1+15,"m"))

Округление результатов вверх или вниз

  1. Функция DATEDIF() всегда округляет (по умолчанию) до ближайшего> целого месяца или года.

  2. Если вы хотите рассчитать месяцы или годы, округленные в большую сторону, добавьте к формуле полмесяца или> полугода, например: = DATEDIF(A19, B19+15, «m») для полугодия (или 15 дней) или = DATEDIF(A21, B21+183, «y») на полгода (или 183> дня). Результат теперь округляется до ближайшего месяца или года.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .