До конца 2020 года остался один месяц, поэтому сегодня мы будем делать календарь. В Эксель. С помощью одной формулы.
Для начала немного подготовительной работы. Создадим новую книгу эксель и в ней создадим 12 вкладок:
Выделим все вкладки, чтобы заполнять их одновременно (если пропустили, можете прочитать статью про это: https://zen.yandex.ru/media/id/5f24070dd98a994308ce5e45/3dformuly-i-vnesenie-dannyh-na-neskolko-listov-odnovremenno-5fa518af8eb5b23a3091c718) и в третьей строке, начиная с ячейки B3, вставим дни недели:
Теперь в ячейке A1 напишем: "=Январь!$A$1" - таблица нам выдаст предупреждение об ошибке, просто проигнорируем его пока и нажмем ввод.
В ячейке B4 пишем формулу - нашу главную, единственную важную формулу:
=ЕСЛИ(ИЛИ((СТРОКА()-4)*7+СТОЛБЕЦ()-ДЕНЬНЕД(ДАТА($A$1;ЛИСТ();1);2)<1;(СТРОКА()-4)*7+СТОЛБЕЦ()-ДЕНЬНЕД(ДАТА($A$1;ЛИСТ();1);2)>ДЕНЬ(КОНМЕСЯЦА(ДАТА($A$1;ЛИСТ();1);0)));"";(СТРОКА()-4)*7+СТОЛБЕЦ()-ДЕНЬНЕД(ДАТА($A$1;ЛИСТ();1);2))
=IF(OR((ROW()-4)*7+COLUMN()-WEEKDAY(DATE($A$1;SHEET();1);2)<1;(ROW()-4)*7+COLUMN()-WEEKDAY(DATE($A$1;SHEET();1);2)>DAY(EOMONTH(DATE($A$1;SHEET();1);0)));"";(ROW()-4)*7+COLUMN()-WEEKDAY(DATE($A$1;SHEET();1);2))
И копируем ее во все ячейки от B4 до H9. Не забываем, что все листы должны быть выделены.
Я позволил себе немного добавить оформления. И уже готов календарь!
Теперь разоблачение фокуса - как работает эта формула:
В ячейке мы указываем день месяца по формуле: (номер строки -4)*7 + (номер столбца) - (порядковый номер дня недели для первого числа месяца): СТРОКА()-4)*7+СТОЛБЕЦ()-ДЕНЬНЕД(ДАТА($A$1;ЛИСТ();1);2)
А еще мы выполняем проверку, если получившееся число меньше 1 или больше дней в месяце, то мы не выводим ничего! Количество дней в месяце можно вычислить с помощью формулы: ДЕНЬ(КОНМЕСЯЦА(ДАТА($A$1;ЛИСТ();1);0))
Можно добавить еще две формулы для дополнительного удобства:
В ячейку A2 напишем:
=ТЕКСТ(ДАТА($A$1;ЛИСТ();1);"ММММ")
=TEXT(DATE($A$1;SHEET();1);"ММММ")
Это просто укажет месяц для каждого листа.
А в ячейку A4 напишем (и "растянем" до ячейки A9)
=ЕСЛИ(МАКС(B4:H4)>0;НОМНЕДЕЛИ(ДАТА($A$1;ЛИСТ();МАКС(B4:H4));2);"")
=IF(MAX(B4:H4)>0;WEEKNUM(DATE($A$1;SHEET();MAX(B4:H4));2);"")
Это будет номер недели.
Все, больше формул не будет точно! Можно разгрупировать листы (нажав на первый из них с кнопкой Shift) и пользоваться.
Чуть не забыл! А как год выбирать? На листе "Январь" в колонке A1 пишем какой угодно год. Проверяем:
Вот и все! Если сбились в какой-то момент, можете загрузить мой файл: https://yadi.sk/d/Aef5JfL2AglA7w
Подписывайтесь на канал, чтобы не пропустить новые статьи. Если есть вопросы, пишите их в комментариях!