Выделяем цветом дни прошлой, будущей и позапрошлой недели в MS EXCEL

history

С помощью Условного Форматирования (УФ) выделим заливкой ячейки содержащие дату, относящуюся к прошлой, позапрошлой и будущей неделе.

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

Пусть в столбце А содержатся даты. Выделим заливкой те, которые относятся к будущей неделе, а также к прошлой и позапрошлой неделе. Сегодняшнюю дату отобразим с помощью функции СЕГОДНЯ()

Номер недели

Каждая неделя имеет свой номер. Номер можно определить с помощью функции =НОМНЕДЕЛИ(B31;2) со вторым аргументом равным 2 (этот аргумент указывает функции, что неделя начинается с понедельника). Подробнее про номера недель можно почитать в этой статье.

Решение задачи сводится к сравнению номера недели у сегодняшней даты и у всех дат в столбце А. Если разница равна 1, то это прошлая неделя, если 2, то позапрошлая. Если, наоборот, вычитать номер недели сегодняшней даты, то разница равна -1 и -2 соответственно. Подробности в файле примера.

Правило (формулу) для Условного форматирования можно ввести как непосредственно в диалоговом окне УФ, так и в ячейках листа. В последнем случае формула для УФ - это просто ссылка на ячейку в формате смешанной ссылки =$J11. Такой подход более наглядный, т.к. позволяет быстрее определить неработающее правило. В файле примера реализовано оба подхода.

Не смотря на то, что с помощью номера недели задача решается элементарно, есть один подводный камень - начало года. Например, номер недели для даты 1/1/2021 равен 1, а для предыдущей даты 31/12/2020 - 53, хотя обе даты относятся к одной неделе. Если начало года важно, то нужно использовать другой подход.

Используем функцию ДЕНЬНЕД()

Альтернативным подходом для определения будущей/прошлой недели может служить следующий алгоритм:

  • находим понедельник текущей недели =СЕГОДНЯ()-ДЕНЬНЕД(СЕГОДНЯ();2)+1
  • вычисляем разницу между заданной датой и понедельником текущей недели
  • если разница лежит между 7 и 13 (включая), то это будущая неделя
  • если разница лежит между -1 и -7 (включая), то это прошлая неделя и т.д.

Итоговая формула несколько громоздкая, но вполне понятная:
=И(
$A11-(СЕГОДНЯ()-ДЕНЬНЕД(СЕГОДНЯ();2)+1)>=$B$26;
$A11-(СЕГОДНЯ()-ДЕНЬНЕД(СЕГОДНЯ();2)+1)<=$C$26)

Настройка правил УФ аналогична предыдущему случаю.

 



Комментарии

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

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

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