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