Оглавление
В то время как Microsoft Excel предоставляет множество функций для работы с днями недели, месяцами и годами, для недель доступна только одна - функция WEEKNUM. Поэтому, если вы ищете способ получить номер недели из даты, WEEKNUM - это та функция, которая вам нужна.
В этом кратком руководстве мы кратко расскажем о синтаксисе и аргументах Excel WEEKNUM, а затем обсудим несколько примеров формул, демонстрирующих, как вы можете использовать функцию WEEKNUM для вычисления номеров недель в ваших рабочих листах Excel.
Функция Excel WEEKNUM - синтаксис
Функция WEEKNUM используется в Excel для возврата номера недели определенной даты в году (число от 1 до 54). Она имеет два аргумента: первый - обязательный, второй - необязательный:
WEEKNUM(serial_number, [return_type])- Серийный_номер - любая дата в течение недели, номер которой вы пытаетесь найти. Это может быть ссылка на ячейку, содержащую дату, дата, введенная с помощью функции DATE или возвращенная какой-либо другой формулой.
- Тип_возврата (необязательно) - число, определяющее, в какой день начинается неделя. Если оно опущено, то по умолчанию используется тип 1 (неделя начинается в воскресенье).
Здесь представлен полный список тип_возврата
значения, поддерживаемые в формулах WEEKNUM.
Тип_возврата | Неделя начинается в |
1 или 17 или опущено | Воскресенье |
2 или 11 | Понедельник |
12 | Вторник |
13 | Среда |
14 | Четверг |
15 | Пятница |
16 | Суббота |
21 | Понедельник (используется в системе 2, подробности см. ниже). |
В функции WEEKNUM два различных системы нумерации недель используются:
- Система 1. Неделя, содержащая 1 января, считается 1-й неделей года и нумеруется неделей 1. В этой системе неделя традиционно начинается в воскресенье.
- Система 2. В этой системе неделя начинается в понедельник, а неделя, содержащая первый четверг года, считается неделей 1. Она широко известна как европейская система нумерации недель и используется в основном в правительстве и бизнесе для учета финансовых лет и времени.
Все перечисленные выше типы возврата относятся к системе 1, за исключением типа возврата 21, который используется в системе 2.
Примечание. В Excel 2007 и более ранних версиях доступны только варианты 1 и 2. Типы возврата с 11 по 21 поддерживаются только в Excel 2010 и Excel 2013.
Формулы Excel WEEKNUM для преобразования даты в номер недели (от 1 до 54)
Следующий скриншот демонстрирует, как можно получить номера недель из дат с помощью простейшей функции =WEEKNUM(A2)
формула:
В приведенной выше формуле тип_возврата
аргумент опущен, что означает, что по умолчанию используется тип 1 - неделя, начинающаяся в воскресенье.
Если вы хотите начать с какого-то другого дня недели, например, с понедельника, то используйте 2 во втором аргументе:
=WEEKNUM(A2, 2)
Вместо ссылки на ячейку можно указать дату непосредственно в формуле, например, с помощью функции DATE(год, месяц, день):
=WEEKNUM(DATE(2015,4,15), 2)
Приведенная выше формула возвращает число 16, которое является номером недели, содержащей 15 апреля 2015 года, причем неделя начинается в понедельник.
В реальной жизни функция Excel WEEKNUM редко используется сама по себе. Чаще всего она применяется в сочетании с другими функциями для выполнения различных вычислений на основе номера недели, как показано в дальнейших примерах.
Как преобразовать номер недели в дату в Excel
Как вы только что убедились, превратить дату в номер недели с помощью функции Excel WEEKNUM несложно. Но что если вам нужно сделать наоборот, то есть преобразовать номер недели в дату? Увы, нет функции Excel, которая могла бы сделать это сразу. Поэтому нам придется построить собственные формулы.
Предположим, у вас есть год в ячейке A2 и номер недели в B2, и теперь вы хотите вычислить даты начала и конца этой недели.
Примечание. Данный пример формулы основан на номерах недель ISO, при этом неделя начинается в понедельник.
Формула для возврата Дата начала недели следующее:
= ДАТА(A2, 1, -2) - ДЕНЬ НЕДЕЛИ(ДАТА(A2, 1, 3)) + B2 * 7
Где A2 - год, а B2 - номер недели.
Обратите внимание, что формула возвращает дату в виде порядкового номера, а чтобы она отображалась как дата, необходимо соответствующим образом отформатировать ячейку. Подробные инструкции вы найдете в разделе Изменение формата даты в Excel. А вот результат, возвращенный формулой:
Конечно, формула для преобразования номера недели в дату не является тривиальной, и может потребоваться некоторое время, чтобы разобраться с логикой. В любом случае, я сделаю все возможное, чтобы дать содержательное объяснение для тех, кому интересно докопаться до сути.
Как вы видите, наша формула состоит из 2 частей:
ДАТА(A2, 1, -2) - ДЕНЬ НЕДЕЛИ(ДАТА(A2, 1, 3))
- вычисляет дату последнего понедельника предыдущего года.B2 * 7
- складывает количество недель, умноженное на 7 (количество дней в неделе), чтобы получить понедельник (дату начала) рассматриваемой недели.
В системе нумерации недель ISO неделя 1 - это неделя, содержащая первый четверг года. Следовательно, первый понедельник всегда находится между 29 декабря и 4 января. Таким образом, чтобы найти эту дату, мы должны найти понедельник, непосредственно предшествующий 5 января.
В Microsoft Excel можно извлечь день недели из даты с помощью функции WEEKDAY. А чтобы получить понедельник, непосредственно предшествующий любой дате, можно воспользоваться следующей общей формулой:
= дата - ДЕНЬ НЕДЕЛИ( дата - 2)Если бы нашей конечной целью было найти понедельник, непосредственно предшествующий 5 января года в A2, мы могли бы использовать следующие функции DATE:
=ДАТА(A2,1,5) - ДЕНЬ НЕДЕЛИ(ДАТА(A2,1,3))
Но на самом деле нам нужен не первый понедельник этого года, а последний понедельник предыдущего года. Таким образом, из 5 января нужно вычесть 7 дней, и, следовательно, в первой функции DATE получится -2:
=ДАТА(A2,1,-2) - ДЕНЬ НЕДЕЛИ(ДАТА(A2,1,3))
По сравнению с хитрой формулой, которую вы только что выучили, вычисление Дата окончания недели - это проще простого :) Чтобы получить воскресенье рассматриваемой недели, просто добавьте 6 дней к Дата начала , т.е. =D2+6
В качестве альтернативы можно добавить 6 непосредственно в формулу:
= ДАТА(A2, 1, -2) - ДЕНЬ НЕДЕЛИ(ДАТА(A2, 1, 3)) + B2 * 7 + 6
Чтобы убедиться, что формулы всегда выдают правильные даты, посмотрите на следующий снимок экрана. Формулы "Начальная дата" и "Конечная дата", рассмотренные выше, скопированы в столбцы D и E соответственно:
Другие способы преобразования номера недели в дату в Excel
Если приведенная выше формула, основанная на системе недельных дат ISO, не отвечает вашим требованиям, попробуйте одно из следующих решений.
Формула 1. Неделя, содержащая январь-1, является неделей 1, неделя пн-сб.
Как вы помните, предыдущая формула работает на основе системы дат ISO, где первый четверг года считается неделей 1. Если вы работаете на основе системы дат, где неделя, содержащая 1 января, считается неделей 1, используйте следующие формулы:
Дата начала работы:
=DATE(A2,1,1) - WEEKDAY(DATE(A2,1,1),2) + (B2-1)*7 + 1
Дата окончания:
= ДАТА(A2,1,1)-ДЕНЬ НЕДЕЛИ(ДАТА(A2,1,1),2) + B2*7
Формула 2. Неделя, содержащая Январь-1, является неделей 1, неделя Солнце-Суббота
Эти формулы похожи на приведенные выше с той лишь разницей, что они написаны для недели с воскресенья по субботу.
Дата начала работы:
=DATE(A2,1,1) - WEEKDAY(DATE(A2,1,1),1) + (B2-1)*7 + 1
Дата окончания:
= ДАТА(A2,1,1)-ДЕНЬ НЕДЕЛИ(ДАТА(A2,1,1),1) + B2*7
Формула 3. Всегда начинайте считать с 1 января, неделя пн-сб.
В то время как предыдущие формулы возвращают понедельник (или воскресенье) первой недели, независимо от того, приходится ли она на этот или предыдущий год, эта формула начальной даты всегда возвращается 1 января как дату начала недели 1, независимо от дня недели. По аналогии, формула даты окончания всегда возвращает 31 декабря как дата окончания последней недели года, независимо от дня недели. Во всех остальных отношениях эти формулы работают аналогично формуле 1, приведенной выше.
Дата начала работы:
=MAX(DATE(A2,1,1), DATE(A2,1,1) - WEEKDAY(DATE(A2,1,1),2) + (B2-1)*7 + 1)
Дата окончания:
=MIN(DATE(A2+1,1,0), DATE(A2,1,1) - WEEKDAY(DATE(A2,1,1),2) + B2*7)
Формула 4. Всегда начинайте отсчет с 1 января, неделя Солнце-Суббота
Чтобы рассчитать даты начала и окончания недели с воскресенья по субботу, достаточно внести одну небольшую поправку в приведенные выше формулы :)
Дата начала работы:
=MAX(DATE(A2,1,1), DATE(A2,1,1) - WEEKDAY(DATE(A2,1,1),1) + (B2-1)*7 + 1)
Дата окончания:
=MIN(DATE(A2+1,1,0), DATE(A2,1,1) - WEEKDAY(DATE(A2,1,1),1) + B2*7)
Как получить месяц из номера недели
Чтобы получить месяц, соответствующий номеру недели, нужно найти первый день в данной неделе, как описано в этом примере, а затем обернуть эту формулу в функцию Excel MONTH следующим образом:
=MONTH(DATE(A2, 1, -2) - WEEKDAY(DATE(A2, 1, 3)) + B2 * 7)
Примечание. Пожалуйста, помните, что приведенная выше формула работает на основе Система недельных дат ISO Например, в 2016 году первый четверг приходится на 7 января, поэтому первая неделя начинается 4 января 2016 года.
Как получить номер недели в месяце (от 1 до 6)
Если ваша бизнес-логика требует преобразования определенной даты в номер недели в соответствующем месяце, вы можете использовать комбинацию функций WEEKNUM, DATE и MONTH:
Предполагая, что ячейка A2 содержит исходную дату, используйте следующую формулу для недели, начинающейся на Понедельник (обратите внимание на 21 в аргументе return_type у WEEKNUM):
=WEEKNUM($A2,21)-WEEKNUM(DATE(YEAR($A2), MONTH($A2),1),21)+1
В течение недели, начиная с Воскресенье , опустите аргумент return_type:
=WEEKNUM($A2)-WEEKNUM(DATE(YEAR($A2), MONTH($A2),1))+1
Как суммировать значения и найти среднее значение по номеру недели
Теперь, когда вы знаете, как преобразовать дату в номер недели в Excel, давайте посмотрим, как можно использовать номера недель в других вычислениях.
Предположим, у вас есть данные о продажах за месяц, и вы хотите узнать общую сумму за каждую неделю.
Для начала давайте выясним номер недели, соответствующий каждой продаже. Если ваши даты указаны в столбце А, а продажи в столбце В, скопируйте =WEEKNUM(A2)
формулу по столбцу C, начиная с ячейки C2.
А затем составьте список номеров недель в каком-нибудь другом столбце (скажем, в столбце E) и рассчитайте продажи за каждую неделю с помощью следующей формулы SUMIF:
=SUMIF($C$2:$C$15, $E2, $B$2:$B$15)
Где E2 - номер недели.
В данном примере мы работаем со списком мартовских продаж, поэтому у нас есть номера недель с 10 по 14, как показано на следующем снимке экрана:
Аналогичным образом можно рассчитать среднее значение продаж за определенную неделю:
=AVERAGEIF($C$2:$C$15, $E2, $B$2:$B$15)
Если вспомогательный столбец с формулой WEEKNUM не очень хорошо вписывается в вашу схему данных, я с сожалением должен сказать вам, что простого способа избавиться от него не существует, потому что Excel WEEKNUM - одна из тех функций, которые не принимают аргументы диапазона. Поэтому ее нельзя использовать внутри SUMPRODUCT или любой другой формулы массива, например, функции MONTH в аналогичном сценарии.
Как выделить ячейки на основе номера недели
Допустим, у вас есть длинный список дат в некотором столбце, и вы хотите выделить только те, которые относятся к определенной неделе. Все, что вам нужно, это правило условного форматирования с формулой WEEKNUM, подобной этой:
=WEEKNUM($A2)=10
Как показано на скриншоте ниже, правило выделяет продажи, которые были сделаны в течение недели 10, то есть первой недели марта 2015 г. Поскольку правило применяется к A2:B15, оно выделяет значения в обоих столбцах. Вы можете узнать больше о создании правил условного форматирования в этом уроке: Условное форматирование Excel на основе значения другой ячейки.
Вот как можно вычислить номер недели в Excel, преобразовать номер недели в дату и извлечь номер недели из даты. Надеюсь, формулы WEEKNUM, которые вы сегодня изучили, пригодятся вам в ваших листах. В следующем уроке мы поговорим о вычислении возраста и лет в Excel. Благодарю вас за чтение и надеюсь увидеть вас на следующей неделе!