Создаем в EXCEL Календарь одной формулой массива

history

Для того, чтобы создать календарь на месяц, достаточно написать одну формулу массива .


Создадим обычный календарь на месяц.

Календарь разместим в диапазоне ячеек 7х6 (7 дней в неделе х 6 -максимальное количество недель в месяце).

Номера недель представим в виде вертикального массива констант ={0:1:2:3:4:5} . Дни недели - в виде горизонтального массива констант ={1;2;3;4;5;6;7} . В первом случае элементы массива разделены двоеточиями, в другом точками с запятой.

Присвоим этим массивам Имена : НомерНедели и ДеньНедели соответственно.

Месяц будем определять по дате в ячейке A 4 .

Создадим Именованную формулу Календарь : =НомерНедели*7+ДеньНедели+$A$4-ДЕНЬНЕД($A$4;2)

Наконец, создадим формулу массива :

  • выделим наш диапазон 7х6 из 42 ячеек,
  • введем в Строке формул =ЕСЛИ(МЕСЯЦ(Календарь)= МЕСЯЦ($A$4);Календарь;"") ,
  • нажмем CTRL+SHIFT+ ENTER .

Разберем подробнее результат вычисления этой формулы массива :

  • НомерНедели*7 – это результат умножения массива констант на число 7 : ={0:7:14:21:28:35};
  • НомерНедели*7+ДеньНедели - Сложение 2-х массивов констант (столбца и строки) дает в результате 2-х мерный массив: {1;2;3;4;5;6;7: 8;9;10;11;12;13;14: 15;16;17;18;19;20;21: 22;23;24;25;26;27;28: 29;30;31;32;33;34;35: 36;37;38;39;40;41;42} – это последовательные номера ячеек в календаре;
  • Теперь осталось правильно выставить точку отсчета: для этого нужно прибавить дату из ячейки А4 и вычесть день недели, на который попадает первое число месяца;
  • Чтобы исключить отображение нескольких дней из конца предыдущего месяца и дней из начала следующего (появляются в неделе 0 и 6) используем функцию ЕСЛИ() .

В файле примера использовано Условное форматирование для выделения выходных, а также Элемент управления Полоса прокрутки для изменения даты в ячейке А4 .


Комментарии

Только для авторизованных пользователей

(только для авторизованных пользователей)

© Copyright 2013 - 2024 Excel2.ru. All Rights Reserved