Главная » Статьи » 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 - номер строки). Это сервисная функция для полноты картины. Читайте также: | |
Просмотров: 54256 | Комментарии: 3 | | |
Всего комментариев: 3 | |
| |