Главная » Статьи » Excel » Условное форматирование |
Все, кто работал в средних и крупных компаниях, наверняка сталкивались с таким документом, как табель учёта рабочего времени. Его заполняют руководители групп или отделов и сдают в отдел кадров. Хорошо, если последний создаёт его на год и распространяет в виде шаблона, но часто происходит доработка своего старого шаблона каждым ответственным. В данной статье я хотел бы показать, как создать максимально универсальный шаблон табеля рабочего времени и попутно продемонстрировать ряд технологий применения условного форматирования и некоторых формул рабочего листа. Готовый шаблон можно скачать тут. Чем удобен данный шаблон:
Данный шаблон демонстрационный, поэтому тут нет подъитогов, которые обычно есть в табеле, подписей и т.д. Моя задача - демонстрация возможностей Excel. Попробуйте поизменять ячейку Месяц в шаблоне для 2014 года, чтобы убедиться в корректном динамическом формировании всех колонок. ![]() Введите несколько фамилий, чтобы убедиться, что форматирование строк появляется автоматически, а также подсвечиваются празники и выходные. ![]() Теперь настало время разобраться, как же работает всё это "волшебство". 1. Для начала сделайте видимыми скрытые строки 3, 4 и 6. 2. Обратите внимание, что в Менеджере имён четырём ячейкам и одному диапазону даны символьные имена. ![]()
* Почему следует давать ячейкам, участвующим в формулах, символьные имена и что такое динамический диапазон, мы обязательно поговорим, в других статьях. 3. В ячейке B3 мы вычисляем длительность месяца, выбранного в полях Год и Месяц.
![]() 4. В строке с заголовком Индикатор с D6 до AH6 мы вычисляем нужна ли данная колонка для выбранного месяца (значение 1) или не нужна (значение 0). Например, для февраля 2014 года столбцы AF:AH, которые предназначены для 29, 30 и 31-го числа месяца, очевидным образом не нужны, поэтому там вы увидите нули в отличие, например, от января 2014-го. Данные индикаторы используются для сигнализации правилам условного форматирования Excel, что данные столбцы форматировать надо (если 1) или не надо (если 0). Индикатор получаем при помощи функции IF, в которой вычисляется логическое условие в первом аргументе. Если номер текущего столбца, поправленный на величену TOffset, меньше или равен числу дней в выбранном месяце, то формула выдаёт 1, если нет - 0. Просто и наглядно из-за использования именованных ячеек. ![]() 5. Далее следует сформировать даты в строке 7.
6. А вот теперь настаёт главное веселье. Сейчас мы начинаем обсуждать то, ради чего писалась, по сути, вся эта статья.
![]() Что же такое форматирование на основе формулы? Это когда Excel применяет настроенное форматирование, если формула условного форматирования (не ячейки, а именно формула внутри правила условного форматирования) принимает ИСТИННОЕ значение. Давайте посмотрим на правило №1, где введена формула =D$6=1" для диапазона ячеек =$D$7:$AH$7". Данное правило должно применяться для оформления строки дат месяца голубым фоном и белым шрифтом. То есть, если "индикатор" дня (в строке 6) равен 1, то применяется бело-голубое форматирование, а если не равно, то не применяется. Но постойте! Почему в формуле мы видим только ячейку D$6 ? Ведь это подойдёт только для форматирования ячейки D7, а, к примеру, для правильного форматирования ячейки Z7, необходимо, чтобы формула ссылалась на ячейку Z6! Оказывается, что эту работу Excel проводит за нас и "протягивает" формулу условного форматирования вправо! То есть, форматируя ячейку D7 он смотрит равно ли единице значение в ячейке D6, форматируя ячейку E7 - смотрит на E6 и так далее. Для чего перед 6 стоит знак $ в формуле правила? В данном правиле это не выстрелило, но вообще говоря, это команда Excel не менять адрес строки (шестой), если бы мы протягивали формулу условного форматирования не только вправо (смотрите адрес нашего диапазона - =$D$7:$AH$7), но и вниз (например целевой диапазон мог бы быть =$D$7:$AH$8"). Надеюсь, вы понимаете разницу между абсолютными и относительными адресами ячеек Excel. Правило №2 рисует рамку в диапазоне ФИО (колонки A:C), если введена фамилия. Прелесть шаблона в том, что форматирование появляется только для заполненных фамилией сотрудника строк. Правило №3 очень важно. Оно отменяет любое форматирование, если фамилия пуста. Причём данное правило снабжено галкой (Stop If True), что отменяет обработку правил, лежащих ниже этого. Правило №4 рисует рамки в диапазоне D8:AH20. Правила №№5-8 меняют фон в зависимости от кода, введенного в ячейку дня. Тут, полагаю, дополнительные комментарии излишни. ![]() Правило №9 отмечает серым выходные, основываясь на формуле =AND(WEEKDAY(D$7;2)>5;D$6=1)". То есть должны выполняться два условия (функция AND): первое - дата в строке 7 это выходной (функция WEEKDAY возвращает номер дня недели, а условие требует чтобы день был больше 5, то есть 6 - суббота или 7 - воскресенье), второе - что данная дата "включена" индикатором. ![]() И правило №10 срабатывает когда текущий день находится на листе Праздники, в диапазоне ячеек Holiday. Объяснять нюансы этой формулы в этой статье нецелесообразно, но мы это обязательно сделаем в других. ![]() Как вы могли заметить, форматирование производится до 20-й строки, но никто не мешает вам в ваших шаблонах увеличить эту константу. Жаль только, что Excel не поддерживает динамические диапазоны в поле Applies to правил форматирования. Туда можно подставить именованный диапазон, но он заменится на статическую адресацию. Ну вот и всё. Надеюсь, вам понравилось и вы оценили всю мощь условного форматирования Excel. P.S. Да, в шаблоне ещё есть небольшой макрос, который очищает колонки Dn:AHn, когда вы удаляете фамилию в строке An (где n - номер строки). Это сервисная функция для полноты картины. Читайте также: | |
Просмотров: 55159 | Комментарии: 3 | | |
Всего комментариев: 3 | |
| |