Условное форматирование в Excel для дат и времени: формулы и правила

  • Поделись Этим
Michael Brown

Если вы постоянный посетитель этого блога, то наверняка заметили несколько статей, посвященных различным аспектам условного форматирования Excel. А теперь мы воспользуемся этими знаниями и создадим электронные таблицы, которые будут отличать будние дни от выходных, выделять государственные праздники и отображать приближающийся срок или задержку. Другими словами, мы будем применять условное форматирование Excel к датам.

Если у вас есть базовые знания формул Excel, то вы, скорее всего, знакомы с некоторыми функциями даты и времени, такими как NOW, TODAY, DATE, WEEKDAY и т.д. В этом руководстве мы собираемся продвинуть эту функциональность на шаг дальше, чтобы условное форматирование дат Excel так, как вы хотите.

    Условное форматирование Excel для дат (встроенные правила)

    Microsoft Excel предоставляет 10 вариантов форматирования выбранных ячеек на основе текущей даты.

    1. Чтобы применить форматирование, достаточно перейти в раздел Главная вкладка> Условное форматирование> Правила выделения ячеек и выберите Происходящая дата .

    2. Выберите один из параметры даты из выпадающего списка в левой части окна, начиная с прошлого месяца и заканчивая следующим.
    3. Наконец, выберите один из предустановленных форматов или установите свой собственный формат, выбирая различные опции на экране Шрифт , Граница и Заполнить Если стандартная палитра Excel не подходит, вы всегда можете щелкнуть по кнопке Больше цветов... кнопка.

    4. Нажмите OK и наслаждайтесь результатом! : )

    Однако этот быстрый и простой способ имеет два существенных ограничения - 1) он работает только для выделенных ячеек и 2) условный формат всегда применяется на основе текущей даты.

    Формулы условного форматирования Excel для дат

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

    Как выделить выходные дни в Excel

    К сожалению, в Microsoft Excel нет встроенного календаря, подобного календарю Outlook. Что ж, давайте посмотрим, как можно создать свой собственный автоматизированный календарь, не прилагая особых усилий.

    При разработке календаря в Excel для отображения дней недели можно использовать функцию =DATE(год,месяц,дата). Просто введите год и номер месяца где-нибудь в своей электронной таблице и ссылайтесь на эти ячейки в формуле. Конечно, можно ввести числа непосредственно в формулу, но это не очень эффективный подход, поскольку придется корректировать формулу для каждого месяца.

    На скриншоте ниже показана функция DATE в действии. Я использовал формулу =DATE($B$2,$B$1,B$4) который копируется через строку 5.

    Совет. Если вы хотите отобразить только дни недели, как показано на рисунке выше, выделите ячейки с формулой (в нашем случае строка 5), щелкните правой кнопкой мыши и выберите команду Формат ячеек.> Число> Пользовательский Из выпадающего списка под Тип выберите либо dddd или ddd для отображения полных или сокращенных названий дней, соответственно.

    Ваш календарь Excel почти готов, осталось только изменить цвет выходных дней. Естественно, вы не будете раскрашивать ячейки вручную. Мы попросим Excel отформатировать выходные дни автоматически, создав правило условного форматирования на основе параметра ВЫХОДНОЙ ДЕНЬ формула.

    1. Начните с выбора календаря Excel, где вы хотите заштриховать выходные дни. В нашем случае это диапазон $B$4:$AE$10. Обязательно начните выделение с символа 1-я колонка дат - Colum B в данном примере.
    2. На Главная вкладка, нажмите Меню условного форматирования> Новое правило .
    3. Создайте новое правило условного форматирования на основе формулы, как описано в приведенном выше руководстве.
    4. В " Форматируйте значения, для которых эта формула истинна" введите следующую формулу WEEKDAY, которая определит, какие ячейки являются субботами и воскресеньями: =WEEKDAY(B$5,2)>5
    5. Нажмите кнопку Формат... и установите свой пользовательский формат, переключаясь между кнопками Шрифт , Граница и Заполнить вкладки и играя с различными вариантами форматирования. Когда закончите, нажмите кнопку OK для предварительного просмотра правила.

    Теперь позвольте мне вкратце объяснить WEEKDAY(serial_number,[return_type]) формулу, чтобы вы могли быстро настроить ее для своих собственных электронных таблиц.

    • Сайт серийный_номер Параметр представляет собой дату, которую вы пытаетесь найти. Вы вводите ссылку на первую ячейку с датой, B$5 в нашем случае.
    • Сайт [return_type] Параметр определяет тип недели (квадратные скобки означают, что он необязателен). Вы вводите 2 как тип возврата для недели, начинающейся с понедельника (1) по воскресенье (7). Полный список доступных типов возврата вы можете найти здесь.
    • Наконец, вы пишете>5, чтобы выделить только субботы (6) и воскресенья (7).

    На скриншоте ниже показан результат в Excel 2013 - выходные дни выделены красноватым цветом.

    Советы:

    • Если в вашей компании нестандартные выходные дни, например, пятница и суббота, то вам нужно будет изменить формулу таким образом, чтобы она начинала отсчет с воскресенья (1) и выделяла дни 6 (пятница) и 7 (суббота). WEEKDAY(B$5,1)>5 .
    • Если вы создаете горизонтальный (альбомный) календарь, используйте относительный столбец (без $) и абсолютную строку (с $) в ссылке на ячейку, потому что вы должны зафиксировать ссылку на строку - в приведенном выше примере это строка 5, поэтому мы ввели B$5. Но если вы разрабатываете календарь в вертикальной ориентации, вы должны сделать наоборот, то есть использовать абсолютный столбец и относительную строку, например, $B5, как вы можете видеть вна скриншоте ниже:

    Как выделить праздники в Excel

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

    Например, я добавил следующие праздники в столбец A ($A$14:$A$17). Конечно, не все из них являются настоящими государственными праздниками, но для демонстрации сойдет : )

    Опять же, вы открываете Условное форматирование > Новое правило В случае с праздниками вы будете использовать либо МАТЧ или COUNTIF функция:

    • =COUNTIF($A$14:$A$17,B$5)>0
    • =MATCH(B$5,$A$14:$A$17,0)

    Примечание. Если вы выбрали другой цвет для праздников, вам нужно переместить правило государственного праздника в начало списка правил с помощью кнопки Условное форматирование> Управление правилами...

    На следующем изображении показан результат в Excel 2013:

    Условное форматирование ячейки при изменении значения на дату

    Условное форматирование ячейки при добавлении даты в эту ячейку или любую другую ячейку в том же ряду не представляет большой проблемы, если не допускается другой тип значения. В этом случае можно просто использовать формулу для выделения непустых ячеек, как описано в разделе Условные формулы Excel для пустых и непустых ячеек. Но что, если в этих ячейках уже есть некоторые значения, например, текст, и вы хотите изменитьцвет фона при изменении текста на дату?

    Задача может показаться несколько замысловатой, но решение очень простое.

    1. Прежде всего, необходимо определить код формата вашей даты. Вот лишь несколько примеров:
      • D1: dd-mmm-yy или d-mmm-yy
      • D2: dd-mmm или d-mmm
      • D3: ммм-гг
      • D4: mm/dd/yy или m/d/yy или m/d/yy h:mm

      Полный список кодов дат вы можете найти в этой статье.

    2. Выберите столбец, в котором нужно изменить цвет ячеек, или всю таблицу, если нужно выделить строки.
    3. А теперь создайте правило условного форматирования с помощью формулы, подобной этой: =CELL("format",$A2)="D1" В формуле A - столбец с датами, а D1 - формат даты.

      Если ваша таблица содержит даты в двух или более форматах, то используйте оператор OR, например. =OR(cell("format", $A2)="D1", cell("format",$A2)="D2", cell("format", $A2)="D3")

      На скриншоте ниже показан результат применения такого правила условного форматирования для дат.

    Как выделить строки на основе определенной даты в определенном столбце

    Предположим, у вас есть большая таблица Excel, содержащая два столбца дат (B и C). Вы хотите выделить каждую строку, в которой есть определенная дата, скажем 13-май-14, в столбце C.

    Чтобы применить условное форматирование Excel к определенной дате, необходимо найти ее числовое значение Во-первых. Как вы, вероятно, знаете, Microsoft Excel хранит даты как последовательные порядковые номера, начиная с 1 января 1900 г. Так, 1 января-1900 хранится как 1, 2 января-1900 - как 2... а 13 мая-14 - как 41772.

    Чтобы найти номер даты, щелкните правой кнопкой мыши ячейку, выберите Формат ячеек> Число и выберите Общий формат. Запишите число, которое вы видите, и нажмите кнопку Отмена потому что на самом деле вы не хотите менять формат даты.

    На самом деле это была основная часть работы, и теперь вам нужно только создать правило условного форматирования для всей таблицы с помощью этой очень простой формулы: =$C2=41772 Формула подразумевает, что в таблице есть заголовки, а строка 2 является первой строкой с данными.

    Альтернативным способом является использование DATEVALUE формула, которая преобразует дату в формат числа, в котором она хранится, например. =$C2=DATEVALUE("5/13/2014")

    Какую бы формулу вы ни использовали, она будет иметь одинаковый эффект:

    Условное форматирование дат в Excel на основе текущей даты

    Как вы, вероятно, знаете, Microsoft Excel предоставляет TODAY() функции для различных вычислений на основе текущей даты. Вот лишь несколько примеров того, как вы можете использовать ее для условного форматирования дат в Excel.

    Пример 1. Выделите даты, равные, большие или меньшие, чем сегодня

    Чтобы условно отформатировать ячейки или целые строки на основе сегодняшней даты, вы используете функцию TODAY следующим образом:

    Равнение на сегодняшний день: =$B2=TODAY()

    Больше, чем сегодня: =$B2>TODAY()

    Меньше, чем сегодня: =$B2

    Приведенный ниже скриншот демонстрирует вышеуказанные правила в действии. Обратите внимание, на момент написания статьи TODAY был 12-Jun-2014.

    Пример 2. Условное форматирование дат в Excel на основе нескольких условий

    Аналогичным образом можно использовать функцию TODAY в сочетании с другими функциями Excel для обработки более сложных сценариев. Например, вы можете захотеть, чтобы формула даты условного форматирования Excel окрашивала в цвет Счет-фактура столбец, когда Дата поставки равно или больше, чем сегодня НО вы хотите, чтобы форматирование исчезало при вводе номера счета-фактуры.

    Для этого задания вам понадобится дополнительный столбец со следующей формулой (где E - ваш Доставка столбец и F Счет-фактура колонна):

    =IF(E2>=TODAY(),IF(F2="", 1, 0), 0)

    Если дата поставки больше или равна текущей дате и в колонке Invoice нет номера, формула возвращает 1, иначе - 0.

    После этого вы создадите простое правило условного форматирования для Счет-фактура столбец с формулой =$G2=1 где G - ваш дополнительный столбец. Конечно, вы сможете скрыть этот столбец позже.

    Пример 3. Выделите предстоящие даты и задержки

    Предположим, у вас есть график проекта в Excel, в котором перечислены задачи, даты их начала и продолжительность. Вы хотите, чтобы дата окончания каждой задачи рассчитывалась автоматически. Дополнительная сложность заключается в том, что формула должна учитывать выходные дни. Например, если дата начала - 13 июня 2014 года, а количество дней работы (Duration) - 2, то дата окончания должна быть 17 июня 2014 года,потому что 14 июня и 15 июня - суббота и воскресенье.

    Для этого мы будем использовать WORKDAY.INTL(начальная_дата,дни,[выходные],[праздники]) функция, точнее =WORKDAY.INTL(B2,C2,1) .

    В формуле мы вводим 1 в качестве 3-го параметра, поскольку он указывает субботу и воскресенье как выходные дни. Вы можете использовать другое значение, если ваши выходные дни отличаются, например, Fri и Sat. Полный список значений выходных дней доступен здесь. По желанию вы также можете использовать 4-й параметр [holidays], который представляет собой набор дат (диапазон ячеек), которые должны быть исключены из календаря рабочих дней.

    И, наконец, вы можете выделить строки в зависимости от того, насколько далеко находится крайний срок. Например, правила условного форматирования, основанные на следующих двух формулах, выделяют соответственно предстоящую и недавнюю даты окончания:

    • =AND($D2-TODAY()>=0,$D2-TODAY()<=7) - выделите все строки, в которых Дата окончания (столбец D) находится в пределах следующие 7 дней Эта формула очень удобна, когда нужно отследить предстоящие сроки годности или платежей.
    • =AND(TODAY()-$D2>=0,TODAY()-$D2<=7) - выделите все строки, в которых Дата окончания (столбец D) находится в пределах последние 7 дней Вы можете использовать эту формулу для отслеживания последних просроченных платежей и других задержек.

    Вот еще несколько примеров формул, которые можно применить к приведенной выше таблице:

    =$D2 - выделяет все прошедшие даты (т.е. даты, которые меньше текущей даты). Может использоваться для форматирования просроченных подписок, просроченных платежей и т.д.

    =$D2>TODAY() - выделяет все будущие даты (т.е. даты, превышающие текущую дату). Вы можете использовать его для выделения предстоящих событий.

    Конечно, в зависимости от конкретной задачи можно использовать бесконечное множество вариаций вышеприведенных формул. Например:

    =$D2-TODAY()>=6 - выделяет даты, которые наступают через 6 или более дней.

    =$D2=TODAY()-14 - выделяет даты, произошедшие ровно 2 недели назад.

    Как выделить даты в диапазоне дат

    Если в рабочем листе имеется длинный список дат, вы также можете захотеть выделить ячейки или строки, которые попадают в определенный диапазон дат, т.е. выделить все даты, которые находятся между двумя заданными датами.

    Вы можете выполнить эту задачу, снова используя функцию TODAY(), только придется построить немного более сложные формулы, как показано в примерах ниже.

    Формулы для выделения прошедших дат

    • Более 30 дней назад: =TODAY()-$A2>30
    • От 30 до 15 дней назад включительно: =AND(TODAY()-$A2>=15, TODAY()-$A2<=30)
    • Менее 15 дней назад: =AND(TODAY()-$A2>=1, TODAY()-$A2<15)

    Текущая дата и любые будущие даты не закрашиваются.

    Формулы для выделения будущих дат

    • Произойдет более чем через 30 дней: =$A2-TODAY()>30
    • От 30 до 15 дней включительно: =AND($A2-TODAY()>=15, $A2-TODAY()<=30)
    • Менее чем за 15 дней: =AND($A2-TODAY()>=1, $A2-TODAY()<15)

    Текущая дата и все прошлые даты не закрашиваются.

    Как заштриховать промежутки и временные интервалы

    В этом последнем примере мы будем использовать еще одну функцию даты Excel - DATEDIF(начальная_дата, конечная_дата, интервал) Эта функция вычисляет разницу между двумя датами на основе заданного интервала. Она отличается от всех других функций, рассмотренных в этом учебнике, тем, что позволяет игнорировать месяцы или годы и вычислять разницу только между днями или месяцами, в зависимости от того, что вы выберете.

    Не понимаете, как это может сработать для вас? Подумайте об этом по-другому... Предположим, у вас есть список дней рождения членов вашей семьи и друзей. Хотели бы вы знать, сколько дней осталось до их следующего дня рождения? Более того, сколько дней осталось до годовщины вашей свадьбы и других событий, которые вы не хотели бы пропустить? Легко!

    Нужная вам формула выглядит следующим образом (где A - ваш Дата колонна):

    =DATEDIF(TODAY(), DATE((YEAR(TODAY())+1), MONTH($A2), DAY($A2)), "yd")

    Тип интервала "yd" в конце формулы используется для игнорирования лет и вычисления разницы только между днями. Полный список доступных типов интервалов смотрите здесь.

    Совет. Если вы случайно забыли или потеряли эту сложную формулу, вы можете использовать эту простую формулу: =365-DATEDIF($A2,TODAY(), "yd") . Это дает точно такие же результаты, только не забудьте заменить 365 на 366 в високосные годы : )

    А теперь давайте создадим правило условного форматирования Excel, чтобы затенять разные промежутки разными цветами. В данном случае имеет смысл использовать цветовую шкалу Excel, а не создавать отдельное правило для каждого периода.

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

    Веб-приложение Excel "Дни до следующего дня рождения"

    Мы создали это веб-приложение Excel, чтобы показать вам вышеприведенную формулу в действии. Просто введите ваши события в 1-й столбец и измените соответствующие даты во 2-м столбце, чтобы поэкспериментировать с результатом.

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

    Если вам интересно узнать, как создавать такие интерактивные таблицы Excel, ознакомьтесь с этой статьей о том, как создавать веб-таблицы Excel.

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

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.