В вашей формуле нет ничего плохого, но, возможно, это не та формула, которую вы хотите использовать. Есть другая формула Excel:
=WEEKNUM(serial_num, [return_type])
Это вернет результаты, которые вы ожидаете получить. Тем не менее, вы должны сначала проверить, какой тип номера недели больше подходит для вашего приложения.
Позвольте мне объяснить далее:
Функция ISOWEEKNUM(дата) работает на основе того, что неделя всегда начинается в понедельник и заканчивается в воскресенье, а затем устанавливает стандарт, согласно которому первая неделя года - это та неделя, которая содержит первый четверг года в этой неделе. Это означает, что последние несколько дней предыдущего года могут быть помечены как первая неделя следующего года.
Функция WEEKNUM(date, start_day) начинает отсчет с недели, содержащей 1 января. 01 января - первый день недели. По умолчанию новые недели начинаются в воскресенье, поэтому неделя 2 начинается в первое воскресенье после 1 января. Вы можете изменить день начала, используя второй параметр в функции. Другими словами, первая неделя может иметь 1 день, если 01 января - суббота и используется начальный день по умолчанию. <- это ключевое понимание функции WEEKNUM().
Я создал небольшую электронную таблицу, которая содержит ваши значения дат и добавляет еще несколько, чтобы продемонстрировать разницу:
Обратите внимание, что не только в 2018 году последний день в году приходится на первую неделю следующего года. Функция ISOWEEKNUM() работает нормально, она просто по-другому интерпретирует начало первой недели.
Еще один способ убедиться в этом - посмотреть на две функции в течение дня, который охватывает первое января:
В 2015 году первое января - четверг. Таким образом, функция недели ISOWEEKNUM() включает последние 3 дня в декабре, а функция WEEKNUM() запускает неделю первого января, но в первую неделю будет только 3 дня для начального дня воскресенья по умолчанию.
Я надеюсь, что это объясняет разницу.