Рассмотрим различные варианты получения номера недели по дате в Excel в зависимости от способа определения первого дня и способа нумерации.
Приветствую всех, уважаемые читатели блога TutorExcel.Ru.
Задача определения номера недели всегда остается актуальной, так как неделя является одним из основных временных интервалов в жизни и бизнесе — понедельные отчеты, планы, телепрограммы и т.д.
Однако, несмотря на внешне кажущуюся простоту задачи, в расчете есть определенные тонкости, о которых мы далее подробно поговорим.
Особенности расчета: нумерация и определение первого дня
Во-первых, в зависимости от страны может отличаться способ определения первой недели года.
В России (согласно ГОСТ ИСО 8601-2001, действует с 2002 г.) первой неделей считается неделя, которая содержит первый четверг года, т.е. неделя содержащая 4 января (другими словами, 1 января это любой день от понедельника до четверга). В США используют другой вариант нумерации, к примеру, у них 1 января начинается новая календарная неделя, независимо от дня недели.
Во-вторых, первый день недели в разных странах также может отличаться.
Для жителей России и стран Европы начало недели начинается с понедельника, но, например, в странах Северной и Южной Америки неделя начинается с воскресенья, а в некоторых странах Ближнего Востока с субботы.
Таким образом, в зависимости от того, какой конкретно способ расчета нам нужен и будем выстраивать алгоритм.
Способ 1. Неделя содержит первый четверг года
Давайте начнем с более популярного варианта, а именно, посчитаем номер недели для российского календаря.
Как мы уже выяснили, в России первой неделя должна содержать первый четверг года.
Для расчета можно воспользоваться следующей формулой:
Алгоритм расчета:
- К вычисляемой дате (напомню, что дата в Excel хранится в числовом виде) прибавляем 3 дня и вычитаем номер дня недели (1 для понедельника, 2 для вторника и т.д.);Этим шагом мы добьемся, что для понедельника, вторника и среды вычисляемая дата увеличится, а для остальных дней (четверга, пятницы, субботы и воскресенья) уменьшится, что и позволит добиться включения первого четверга года в первую неделю.
- Далее возьмем остаток от деления на 365,25 (средняя длительность года с учетом високосного года);Этой операцией мы получим количество дней в текущем году для вычисляемой даты.
- Делим полученный результат делим на 7;Переводим дни в недели.
- Прибавляем 1 и берем целую часть числа.
Начиная с версии Excel 2013 добавлена стандартная функция НОМНЕДЕЛИ.ISO (по стандарту ИСО), которую можно применить вместо выше приведенной формулы.
Синтаксис и описание функции НОМНЕДЕЛИ.ISO (в английской версии WEEKNUM.ISO):
НОМНЕДЕЛИ.ISO(дата)
Возвращает номер недели в году по стандарту ISO для указанной даты.
- Дата (обязательный аргумент) — код даты-времени.
Проверим работу функции на тех же датах, что и в предыдущем примере:
Результаты совпали, что и требовалось, теперь перейдем к другим вариантам календаря.
Способ 2. Первая неделя начинается 1 января
Для такого способа нумерации недель тоже есть вариант стандартной функции, причем он доступен и в более ранних версиях Excel.
Синтаксис и описание функции НОМНЕДЕЛИ (в английской версии WEEKNUM):
НОМНЕДЕЛИ.ISO(дата; [тип])
Возвращает номер недели года.
- Дата (обязательный аргумент) — код даты-времени;
- Тип (необязательный аргумент) — тип возвращаемого значения, 1 (по умолчанию; американский вариант, неделя начинается в воскресенье) и 2 (российский вариант, неделя начинается в понедельник).
В качестве примера рассмотрим 2017 г. где 1 января приходится на воскресенье, а 2 января на понедельник.
Соответственно, получается, что в американском варианте расчета недели меняются между 7 и 8 января, а в российском между 8 и 9 января:
Также возможные и другие различные значения аргумента Тип:
Первая цифра типа означает способ определения первой недели года (1 — неделя начинается 1 января, 2 — содержит первый четверг года), а вторая цифра определяет с какого дня начинается неделя (1 — понедельник, 2 — вторник, 3 — среда и т.д.)
Спасибо за внимание!
Если у вас остались вопросы по теме статьи — пишите в комментариях.
Удачи вам и до скорых встреч на страницах блога TutorExcel.Ru!