Условное форматирование пересекающихся дат

Условное форматирование пересекающихся дат

Общая формула

=СУММПРОИЗВ((дата_начала<=даты_окончания)*( дата_окончания>= даты_начала))>1

=SUMPRODUCT((start_date<=end_dates)*(end_date>=start_dates))>1

Объяснение

Для того чтобы выделить ячейки, где даты пересекаются, вы можете использовать условное форматирование с формулой, основанной на функции СУММПРОИЗВ. В приведенном примере формула в ячейке E6:

=СУММПРОИЗВ(($C6<=$D$5:$D$9)*($D6>=$C$5:$C$9))>1

=SUMPRODUCT(($C6<=$D$5:$D$9)*($D6>=$C$5:$C$9))>1

Это та же самая формула, которая используется для выделения целых строк в таблице с использованием правила условного форматирования на основе формулы.

Как работает формула

Подумайте, как работают перекрывающиеся даты. Чтобы проект перекрывал даты других проектов, должны быть выполнены два условия:

  1. Дата начала должна быть меньше или равна (<=) по крайней мере до одной другой даты окончания и списка.
  2. Дата окончания проекта должна быть больше или равна (>=) по крайней мере одной другой дате начала в списке.

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

Функция СУММПРОИЗВ идеально подходит этой задачи, потому что она отлично выполняет сравнения массивов.

Чтобы проверить дату начала проекта снова на все даты окончания, мы используем это выражение:

($C6<=$D$5:$D$9)

($C6<=$D$5:$D$9)

Для того чтобы проверить дату окончания проекта на все даты окончания, мы используем это выражение:

($D6>=$C$5:$C$9)

($D6>=$C$5:$C$9)

Полученные массивы значений ИСТИНА ЛОЖЬ умножаются друг на друга внутри СУММПРОИЗВ. Это автоматически приводит к результатам ИСТИНА и ЛОЖЬ в 1 и 0, поэтому формула разрешается следующим образом:

=СУММПРОИЗВ({0;1;1;1;1}*{1;1;1;0;0})>1

=СУММПРОИЗВ({0;1;1;0;0})>1

=ИСТИНА

=SUMPRODUCT({0;1;1;1;1}*{1;1;1;0;0})>1

=SUMPRODUCT({0;1;1;0;0})>1

=TRUE

Оцените статью
Добавить комментарий