18

Я использую электронную таблицу, в которой указан номер недели на определенную дату. После некоторых исследований я обнаружил функцию ISOWEEKNUM(), которую можно применить к столбцу дат, и это, похоже, работает нормально. Выдержка из этой таблицы приведена в ссылке ниже:

выдержка из таблицы

Тем не менее, я заметил, что эта функция перестает работать в 2018 году, когда она показывает номер недели для 31/12/2018 как неделю 1, когда она всегда отображалась как неделя 52 или неделя 53 в предыдущие годы (что имеет смысл для меня),

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

2 ответа2

33

В вашей формуле нет ничего плохого, но, возможно, это не та формула, которую вы хотите использовать. Есть другая формула 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 дня для начального дня воскресенья по умолчанию.

Я надеюсь, что это объясняет разницу.

17

Похоже, что функция выходит из строя в 2018 году, когда в качестве недели 1 отображается номер недели для 31.12.2017

Это правильно, так как 31 декабря 2018 года - понедельник.

Если 31 декабря - понедельник, вторник или среда, то это будет неделя 01 следующего года. Если это четверг, то это на 53 неделе года, который только заканчивается; если в пятницу это на 52 неделе (или 53, если год, который заканчивается, является високосным); если в субботу или в воскресенье, это на 52 неделе года, который только заканчивается.

Исходная дата недели ISO - Википедия

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