Порядковый номер недели в месяце |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
history 20 марта 2023 г.
- Группы статей
- Неделя, День недели
Подсчитаем количество недель в месяце. Рассмотрим разные варианты: количество полных недель (все 7 дней недели попадают в нужный нам месяц), количество недель, в которых вся рабочая неделя принадлежит одному месяцу и другие варианты.
Подсчет недель
Создадим форму для подсчета количества недель в месяце. Будем учитывать недели, в которых имеется заданное количество рабочих дней. Пусть задан месяц — июнь 2023 года, и мы будем относить к этому емсяцу только те недели, в которых количество рабочих дней ровно 5, т.е. интересует полная рабочая неделя. Очевидно, что таких недель в июне 2023 года — четыре.
Примечание: в файле примерасоздан календарь на месяц с помощью единственной формулы.
В первой неделе 2 рабочих дня, значит ее мы не будем относить к данному месяцу. Потом идет 3 полных недели, и наконец, еще 5 рабочих дней, т.е. последняя неделя должна быть учтена. Итого 4 недели.
Универсальная форма
Всего недель в разных месяцах может быть 3, 4 или 5 (в зависимости от количества рабочих дней, которое мы будем задавать). Все дело в 1-й и последней неделе месяца, именно их и мы будем анализировать с помощью нижеприведенной универсальной формы.
Сначала найдем первый день месяца с помощью формулы =КОНМЕСЯЦА(C10;-1)+1 (этот день точно принадлежит первой неделе) и вычислим день недели, на который он попадает =ДЕНЬНЕД(C19;2). Затем, подсчитаем количество рабочих дней на первой неделе =6-C13.
Аналогичные вычисления сделаем и с последней неделей, предварительно определив последний день месяца =КОНМЕСЯЦА(C10;0).
С помощью элементов управления Счетчик в файле примера можно изменять месяцы и минимальное количество рабочих дней на неделе. Если задать 2 рабочих дня, то формула вернет 5 (для июня 2023).
Количество полных недель в месяце
Полной неделей будем называть неделю, в которой все 7 дней принадлежат одному месяцу. Например, в том же июне 2023 года полных недель всего 3.
В файле примера создана отдельная форма, в которой приведено 2 альтернативных формулы для решения.
Вычисления в данном случае проще, т.к. таких недель может быть только 3 или 4. Сначала определим количество дней в первой неделе, затем прибавим 28. Если получившееся число не превысило количество дней в месяце, то у нас 4 полных недели, если превысило, то таких недель 3.
Применение решения
Отнесение недели к тому или иному месяцу используется, например, при составлении календарно-сетевых графиков с шагом неделя. В MS Project эта задача решается так:
Верхняя шкала — это месяцы, а вторая — дни месяца шагом 7 дней (т.е. 1 неделя). Обратите внимание, что дни — это не обязательно понедельники, а любой день недели (начальная дата задается началом проекта). Границы месяца вычисляются в зависимости от доли месяца, которая попадает на неделю. Например, рассмотрим границу между апрелем и маем: в апреле 30 дней, поэтому неделя с 25.04.2005 по 02.05.2005 (см. ячейку, в которой число 25) примерно разделена в пропорции 1/6. 1 день (1 мая) относится к маю, а остальные 6 дней (25-30.04) относятся к апрелю. Понятно, что ширина ячейки, обозначающей неделю, будет постоянной, а вот длины ячеек, отображающих месяцы, буду разными (это видно, если сравнить длину февраля и марта — март заметно длиннее (на 3 дня)).
В MS EXCEL такое разбиение осуществить затруднительно, т.к. при шаге графика равным 1 неделе, логично 1 неделю разместить в 1 столбце. Длина месяца автоматически станет кратна количеству столбцов, т.е. недель (мы не сможем одну часть ячейки отнести к одну месяцу, а другую к другому месяцу. В принципе, конечно, можем, но тогда придется шаг делать кратным 1 дню, что существенно усложник график для проектов длительностью более полугода). Другими словами, в каждом месяце всегда будет целое количество недель (в MS Project это не так). Поэтому, отнесение недели к месяцу будет приблизительным, а не точным как в MS Project. В некоторых месяцах будет 4 недели, а в некоторых 5. Чтобы решить, куда лучше отнести неделю, как раз можно воспользоваться показанным выше подходом. Например, неделю относить к тому месяцу, к которому относятся 3 рабочих дня этой недели.
Так, первая неделя Июня 2023 будет отнесена к предыдущему месяцу, т.е. Маю 2023.
Эта задача решена в статье про Календарно-сетевой график в неделях.
Даты в ячейках — это понедельники недель. Например, неделя, на которую попадает 01.03.2023, начинается 27.02.2023. В ней 3 рабочих дня (1-3 марта) попадают на март, поэтому эта неделя отнесена к марту. Для это используется тот же подход, что и при нахождении количества недель в месяце, изложенный в данной статье.
Номер недели по дате функцией НОМНЕДЕЛИ
Потребность знать номер рабочей недели для заданной даты (или группы дат) весьма востребованная вещь в управленческом учете. Понедельные отчеты, еженедельный контроль выполнения плана, недельная сетка вещания в рекламе – все это требует умения определять номер рабочей недели для заданной даты. Задача, на первый взгляд, простая, но (как всегда) есть несколько весьма существенных нюансов.
Во-первых, в разных странах отсчет начала и конца самой недели – различаются. У нас в России днем отсчета недели принят понедельник, а в других странах (например, США и Израиле) – воскресенье.
Во-вторых, вопрос — какую неделю считать первой? На сегодняшний момент существуют как минимум два основных варианта с разной логикой. Рассмотрим их последовательно.
Способ 1. Стандарт ГОСТ ИСО 8601-2001 и функция НОМНЕДЕЛИ.ISO
Первой рабочей неделей года считается та, на которую выпадает первый четверг года (или 4 января, если хотите). Здесь логика проста. Первая неделя – это та, на которую пришлось больше трех дней (больше половины недели) из наступившего года. Некоторое неудобство в том, что в году получается когда 52, а когда 53 рабочих недели. Плюс ко всему 1 января может запросто оказаться 52 неделей предыдущего года.
Но именно этот вариант официально принят в России с 2002 года как государственный и остается им на данный момент (см. ГОСТ ИСО 8601-2001). Чтобы посчитать номер недели по дате по такой системе, можно использовать вот такую формулу:
=ОТБР(ОСТАТ(A1+3-ДЕНЬНЕД(A1;2);365,25)/7+1)
=TRUNC(MOD(A1+3-WEEKDAY(A1;2);365,25)/7+1)
В Excel 2013 функцию для расчета номера недели по ISO добавили в стандартный набор – она называется НОМНЕДЕЛИ.ISO (WEEKNUM.ISO)
Способ 2. Неделя с 1-м января и функция НОМНЕДЕЛИ (WEEKNUM)
В этом случае первой неделей года считается та, на которую попадает 1 января. Здесь также возникает сложность в том, что в году может оказаться 52 или 53 недели и, плюс ко всему, 1 января может выпасть на воскресенье, т.е. шесть последних дней года могут оказаться уже в неделе с номером 1, что затрудняет отчетность. Тем не менее, если такой способ нумерации вам нужен, то его можно реализовать функцией НОМНЕДЕЛИ (WEEKNUM), появившейся в Excel начиная с 2007 года. Синтаксис этой функции таков:
=НОМНЕДЕЛИ(Дата; Тип_отсчета)
где
- Дата — ячейка с датой, для которой нужно определить номер недели
- Тип_отсчета — число (1, 2 или 3), обозначающее тип нумерации дней в неделе. Вариант 1 — американский (неделя начинается с воскресенья), вариант 2 — наш.
Ссылки по теме
- Основные принципы работы с датами и временем в Microsoft Excel
- Номер квартала по дате
- Вычисление возраста или стажа в годах, месяцах, днях
- Выпадающий календарь для удобного ввода даты из надстройки PLEX
Содержание
- Вычисление количества дней
- Способ 1: комбинация операторов ДЕНЬ и КОНМЕСЯЦА
- Способ 2: автоматическое определение количества дней
- Способ 3: вычисление количества дней для использования в сложных формулах
- Способ 4: альтернативная формула
- Вопросы и ответы
Для решения некоторых задач при создании таблицы нужно в отдельной ячейке или внутри формулы указать количество дней в месяце, чтобы программа провела необходимые расчеты. В Экселе имеются инструменты, предназначенные для выполнения данной операции. Давайте рассмотрим различные способы применения данной возможности.
Вычисление количества дней
Вычислить количество дней в месяце в Экселе можно с помощью специальных операторов категории «Дата и время». Чтобы выяснить, какой именно вариант лучше всего применить, нужно, прежде всего, установить цели выполнения операции. В зависимости от этого результат вычисления может выводиться в отдельный элемент на листе, а может использоваться и внутри другой формулы.
Способ 1: комбинация операторов ДЕНЬ и КОНМЕСЯЦА
Наиболее простым способом решить данную задачу является комбинация операторов ДЕНЬ и КОНМЕСЯЦА.
Функция ДЕНЬ принадлежит к группе операторов «Дата и время». Она указывает на конкретное число от 1 до 31. В нашем случае задачей данного оператора будет указание последнего дня месяца при помощи встроенной функции в виде аргумента КОНМЕСЯЦА.
Синтаксис оператора ДЕНЬ следующий:
=ДЕНЬ(дата_в_числовом_формате)
То есть, единственным аргументом данной функции является «Дата в числовом формате». Его и будет задавать оператор КОНМЕСЯЦА. Нужно сказать, что дата в числовом формате отличается от привычного формата. Например, дата 04.05.2017 в числовом виде будет выглядеть, как 42859. Поэтому этот формат Эксель использует только для внутренних операций. Он редко применяется для отображения в ячейках
Оператор КОНМЕСЯЦА предназначен для того, чтобы указывать порядковый номер последнего дня месяца, который находится на заданное количество месяцев вперед или назад от указанной даты. Синтаксис функции таков:
=КОНМЕСЯЦА(нач_дата;число_месяцев)
Оператор «Начальная дата» содержит дату, от которой производится отсчет, или ссылку на ячейку, где она находится.
Оператор «Число месяцев» указывает на то количество месяцев, на которое следует производить отсчет от заданного числа.
Теперь давайте посмотрим, как это работает на конкретном примере. Для этого возьмем лист Excel, в одну из ячеек которого вписано определенное календарное число. Нужно при помощи указанного выше набора операторов определить, сколько дней в том месячном периоде, к которому это число относится.
- Выделяем ячейку на листе, в которую будет выводиться результат. Щелкаем по кнопке «Вставить функцию». Эта кнопка размещена слева от строки формул.
- Запускается окно Мастера функций. Переходим в раздел «Дата и время». Находим и выделяем запись «ДЕНЬ». Производим щелчок по кнопке «OK».
- Открывается окно аргументов оператора ДЕНЬ. Как видим, оно содержит всего одно поле – «Дата в числовом формате». Обычно тут устанавливают число или ссылку на ячейку, его содержащую, но у нас в данном поле будет находиться функция КОНМЕСЯЦА. Поэтому устанавливаем курсор в поле, а затем кликаем по пиктограмме в виде треугольника слева от строки формул. Открывается список недавно использованных операторов. Если вы в нем обнаружите наименование «КОНМЕСЯЦА», то сразу кликайте по нему для перехода в окно аргументов данной функции. Если же данного наименования вы не отыщите, то в таком случае щелкайте по позиции «Другие функции…».
- Снова запускается Мастер функций и опять мы перемещаемся в ту же группу операторов. Но на этот раз ищем наименование «КОНМЕСЯЦА». После выделения указанного названия щелкаем по кнопке «OK».
- Производится запуск окна аргументов оператора КОНМЕСЯЦА.
В первом его поле, называющемся «Начальная дата», нужно установить то число, которое находится у нас в отдельной ячейке. Именно количество дней в том периоде, к которому оно относится, мы и будем определять. Для того, чтобы установить адрес ячейки, ставим курсор в поле, а затем просто кликаем по ней на листе левой кнопкой мыши. Координаты тут же будут отображены в окошке.
В поле «Число месяцев» ставим значение «0», так как нам нужно определить продолжительность именно того периода, к которому относится указанное число.
После этого щелкаем по кнопке «OK».
- Как видим, после выполнения последнего действия количество дней в месяце, к которому относится выбранное число, отобразилась в ячейке на листе.
Общая формула у нас приняла следующий вид:
=ДЕНЬ(КОНМЕСЯЦА(B3;0))
В этой формуле переменным значением является только адрес ячейки (B3). Таким образом, если вы не хотите выполнять процедуру посредством Мастера функций, можно вставить данную формулу в любой элемент листа, просто заменив адрес ячейки, содержащей число, на тот, который актуален в конкретно вашем случае. Результат будет аналогичен.
Урок: Мастер функций в Экселе
Способ 2: автоматическое определение количества дней
Теперь давайте рассмотрим другую задачу. Требуется, чтобы количество дней выводилось не по заданному календарному числу, а по текущему. К тому же смена периодов производилась бы автоматически без участия пользователя. Хоть это и кажется странным, но данная задача легче предыдущей. Для её решения даже открывать Мастер функций не нужно, так как формула, выполняющая данную операцию, не содержит переменных значений или ссылок на ячейки. Вы просто можете вбить в ту ячейку листа, где хотите, чтобы отображался результат, следующую формулу без изменений:
=ДЕНЬ(КОНМЕСЯЦА(СЕГОДНЯ();0))
Встроенная функция СЕГОДНЯ, которую мы применили в данном случае, отображает сегодняшнее число и не имеет аргументов. Таким образом, у вас в ячейке постоянно будет отображаться количество дней в текущем месяце.
Способ 3: вычисление количества дней для использования в сложных формулах
В примерах выше мы показали, как выполнять вычисление количества дней в месяце по указанному календарному числу или автоматически по текущему месяцу с выводом результата в отдельную ячейку. Но нахождение данного значения может понадобиться и для вычисления других показателей. При этом расчет количества дней будет производиться внутри сложной формулы и не станет выводиться в отдельной ячейке. Посмотрим, как это сделать на примере.
Нам нужно сделать так, чтобы в ячейке отображалось то количество дней, которое осталось до конца текущего месяца. Как и в предыдущем способе, данный вариант действий не требует открытия Мастера функций. Вы можете просто вбить в ячейку следующее выражение:
=ДЕНЬ(КОНМЕСЯЦА(СЕГОДНЯ();0))-ДЕНЬ(СЕГОДНЯ())
После этого в указанной ячейке будет выводиться число дней до конца месяца. Каждый день результат будет автоматически обновляться, а с начала нового периода отсчет начнется заново. Получается своеобразный таймер обратного отсчета.
Как видим, указанная формула состоит из двух частей. Первая из них представляет собой уже знакомое нам выражение расчета числа дней в месяце:
=ДЕНЬ(КОНМЕСЯЦА(СЕГОДНЯ();0))
А вот во второй части производится вычитание из этого показателя сегодняшнего числа:
-ДЕНЬ(СЕГОДНЯ())
Таким образом, при выполнении данного расчета формула вычисления количества дней является составной частью более сложной формулы.
Способ 4: альтернативная формула
Но, к сожалению, у версий программы ранее Excel 2007 отсутствует оператор КОНМЕСЯЦА. Как же быть тем пользователям, которые применяют старые версии приложения? Для них такая возможность существует посредством другой формулы, которая более массивна, чем описываемая выше. Посмотрим, как рассчитать количество дней в месяце по заданному календарному числу с помощью этого варианта.
- Выделяем ячейку для вывода результата и переходим в окно аргументов оператора ДЕНЬ уже привычным для нас способом. Устанавливаем курсор в единственное поле этого окна и кликаем по перевернутому треугольнику слева от строки формул. Переходим в раздел «Другие функции…».
- В окне Мастера функций в группе «Дата и время» выделяем наименование «ДАТА» и жмем на кнопку «OK».
- Запускается окошко оператора ДАТА. Данная функция преобразует дату из обычного формата в числовое значение, которое и должен будет потом обработать оператор ДЕНЬ.
Открывшееся окно имеет три поля. В поле «День» можно сразу ввести число «1». Это будет неизменным действием для любой ситуации. А вот двумя другими полями придется заняться основательно.
Устанавливаем курсор в поле «Год». Далее переходим к выбору операторов через знакомый нам треугольник.
- Все в той же категории Мастера функций выделяем наименование «ГОД» и щелкаем по кнопке «OK».
- Запускается окно аргументов оператора ГОД. Он определяет год по указанному числу. В единственном поле окна «Дата в числовом формате» указываем ссылку на ячейку, содержащую исходную дату, для которой нужно определить количество дней. После этого не спешим щелкать по кнопке «OK», а кликаем по наименованию «ДАТА» в строке формул.
- Затем мы опять возвращается в окно аргументов ДАТА. Устанавливаем курсор в поле «Месяц» и переходим к выбору функций.
- В Мастере функций щелкаем по наименованию «МЕСЯЦ» и жмем на кнопку «OK».
- Запускается окно аргументов функции МЕСЯЦ. Её задачи схожи с предыдущим оператором, только она выводит значение номера месяца. В единственное поле данного окна устанавливаем ту же самую ссылку на исходное число. Затем в строке формул щелкаем по наименованию «ДЕНЬ».
- Возвращаемся в окно аргументов ДЕНЬ. Тут нам предстоит сделать всего один небольшой штрих. В единственное поле окна, в котором уже находятся данные, добавляем в конец формулы выражение «-1» без кавычек, а также ставим «+1» после оператора МЕСЯЦ. После этого кликаем по кнопке «OK».
- Как видим, в предварительно выделенной ячейке отобразилось количество дней в месяце, к которому принадлежит указанное число. Общая формула имеет такой вид:
=ДЕНЬ(ДАТА(ГОД(D3);МЕСЯЦ(D3)+1;1)-1)
Секрет этой формулы прост. Мы с помощью неё определяем дату первого дня следующего периода, а потом отнимаем от неё один день, получая количество дней в указанном месяце. Переменной величиной в этой формуле является ссылка на ячейку D3 в двух местах. Если её заменить на адрес той ячейки, в которой находится дата в вашем конкретном случае, то можно просто вбить данное выражение в любой элемент листа без помощи Мастера функций.
Урок: Функции даты и времени в Excel
Как видим, существует несколько вариантов узнать количество дней в месяце в Excel. Каким именно из них воспользоваться, зависит от конечной цели пользователя, а также от того, какой версией программы он пользуется.
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше
В этой статье описаны синтаксис формулы и использование функции НОМНЕДЕЛЬ
в Microsoft Excel.
Описание
Возвращает номер недели для определенной даты. Например, неделя, на которую приходится 1 января, считается первой неделей года, и для нее возвращается число 1.
Для этой функции могут использоваться две разные системы.
-
Система 1 Неделя, на которую приходится 1 января, считается первой неделей года, и для нее возвращается число 1.
-
Система 2 Неделя, на которую приходится первый четверг года, считается первой неделей, и для нее возвращается число 1. Эта методика определена в стандарте ISO 8601, который широко используется в Европе для нумерации недель.
Синтаксис
НОМНЕДЕЛИ(дата_в_числовом_формате;[тип])
Аргументы функции НОМНЕДЕЛИ описаны ниже.
-
Дата_в_числовом_формате Обязательный. Дата, по которой определяется неделя. Даты должны вводиться с использованием функции ДАТА или как результат вычисления других формул и функций. Например, для указания даты 23 мая 2008 г. воспользуйтесь выражением ДАТА(2008,5,23). Если даты вводятся как текст, это может привести к возникновению проблем.
-
Тип Необязательный. Число, которое определяет, с какого дня начинается неделя. Значение по умолчанию — 1.
Тип |
Начало недели |
Система |
1 или опущен |
Воскресенье |
1 |
2 |
Понедельник |
1 |
11 |
Понедельник |
1 |
12 |
Вторник |
1 |
13 |
Среда |
1 |
14 |
Четверг |
1 |
15 |
Пятница |
1 |
16 |
Суббота |
1 |
17 |
Воскресенье |
1 |
21 |
Понедельник |
2 |
Замечание
-
В приложении Excel даты хранятся в виде последовательных чисел, что позволяет использовать их в вычислениях. По умолчанию дате 1 января 1900 г. соответствует число 1, а 1 января 2008 г. — число 39 448, поскольку интервал между датами составляет 39 448 дней.
-
Если Serial_number находится вне диапазона для текущего базового значения даты, #NUM! возвращается ошибка.
-
Если Return_type находится вне диапазона, указанного в таблице выше, #NUM! возвращается ошибка.
Пример
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Данные |
||
09.03.2012 |
||
Формула |
Описание |
Результат |
=НОМНЕДЕЛИ(A2) |
Номер недели в году, на которую припадает дата 09.03.2012, если неделя начинается в воскресенье (по умолчанию). |
10 |
=НОМНЕДЕЛИ(A2;2) |
Номер недели в году, на которую припадает дата 09.03.2012, если неделя начинается в понедельник (второй аргумент, т. е. 2). |
11 |