Четверг, 23.11.2017
Уголок эникейщика
Меню сайта
Категории раздела
Около ПК [67]
Полезные программы [32]
Интересности [26]
[8]
Android [8]
Личное [27]
Настройки сайта [8]
Избранное

Рахни православні

Погода в Виннице
Сайт Экслера

Форум Ru.Board
CWER.ru

Hot Line - Цены
Яндекс.Маркет

Форум rutracker.org

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » 2015 » Сентябрь » 4 » Календарь в Excel с использованием формулы массива
14:30
Календарь в Excel с использованием формулы массива

Понадобилось создать календарь в Excel, и чтобы попроще. На просторах интернета нашел интересное решение с использованием формулы массива, но простой копипаст не помог, формула выдавала ошибку, мало того, неделя в ней начиналась с воскресенья и в статье информации было очень мало. Пришлось разбираться.

Итак, для примера решаем, что календарь будеть размещаться в диапазоне B6:H11. Название месяца выведем в объединении ячеек B4:H4. В получившейся ячейке B4 введем любую дату в пределах нужного месяца.

Поскольку в дальнейшем нужно будет использовать дату, содержащую первое число выбранного месяца, то в ячейку J4 помещаем формулу: =ДАТА(ГОД(B4);МЕСЯЦ(B4);1):

Выделяем диапазон B6:H11, переходим в строку формул и вводим формулу, которая пока, для упрощения понимания включает дни предыдущего/следующего месяцев:

 =J4-ДЕНЬНЕД(J4)+{0:1:2:3:4:5}*7+{1;2;3;4;5;6;7}+1

Расшифровка формулы: от даты в J4 минусуем номер дня недели для J4 плюс (номер строки-1)*7 для каждой ячейки плюс (номер столбца)+1 для каждой ячейки.
После ввода формулы ОБЯЗАТЕЛЬНО нажимаем <Ctrl+Shift+Enter>. Тогда Excel "понимает", что в диапазон B6:H11 введена формула массива.

Переходим в строку формул, удаляем предыдущую и вводим такую (с отсечением дней предыдущего/следующего месяцев по условию ЕСЛИ(МЕСЯЦ(J4)<>МЕСЯЦ(J4-ДЕНЬНЕД(J4)+{0:1:2:3:4:5}*7+{1;2;3;4;5;6;7}+1)):

=ЕСЛИ(МЕСЯЦ(J4)<>МЕСЯЦ(J4-ДЕНЬНЕД(J4)+{0:1:2:3:4:5}*7+{1;2;3;4;5;6;7}+1);"";J4-ДЕНЬНЕД(J4)+{0:1:2:3:4:5}*7+{1;2;3;4;5;6;7}+1)

Т.е, если месяц для каждой ячейки (предыдущая формула) не равен месяцу в J4, то выводим пустую строку, иначе - берем предыдущую формулу.
Не забываем о <Ctrl+Shift+Enter>!

Осталось выставить формат для ячеек календаря: Д

 

... для ячейки B4 с названием месяца: ММММ ГГГГ

... и скрыть колонку J

Календарь готов: скачать.

P.S. В ноябре вылезла проблемка: если месяц начинается с воскресенья, то календарь выводится правильно, но начиная со 2-го числа (понедельника). Поэтому подправил так:

  1. В ячейке J5 будет храниться сдвиг для дней календаря: -6 для месяцев, начинающихся с воскресенья и +1 - для всех остальных месяцев (как и было раньше): =ЕСЛИ(ДЕНЬНЕД(J4)=1;-6;1)
  2. В основную формулу календаря поставил ссылку на этот сдвиг (J5):

=ЕСЛИ(МЕСЯЦ(J4)<>МЕСЯЦ(J4-ДЕНЬНЕД(J4)+{0:1:2:3:4:5}*7+{1;2;3;4;5;6;7}+J5);"";J4-ДЕНЬНЕД(J4)+{0:1:2:3:4:5}*7+{1;2;3;4;5;6;7}+J5)

Категория: Около ПК | Просмотров: 613 | Добавил: IgorDanyK | Рейтинг: 0.0/0
Облако тегов
сайт программы Статьи личное разочарования Windows 1c антивирус политика почитать рекомендую Prices math ссылки english скрипты total сеть VBS
Календарь
«  Сентябрь 2015  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930
Архив записей
Поиск
Google

WWW на сайте
Copyright IgorDanyK © 2017
Создать бесплатный сайт с uCoz