Подсчитаем количество недель в месяце. Рассмотрим разные варианты: количество полных недель (все 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 марта) попадают на март, поэтому эта неделя отнесена к марту. Для это используется тот же подход, что и при нахождении количества недель в месяце, изложенный в данной статье.
© Copyright 2013 - 2024 Excel2.ru. All Rights Reserved
Комментарии