Проверьте, попадает ли список дат между каким-либо одним списком дат

#google-sheets

Вопрос:

У меня есть такая электронная таблица:

       A        B        C       D
01 11/10/21 25/09/21 10/10/21
02 29/11/21 
03 17/01/22 17/12/21 30/01/22
04 07/03/22
05 25/04/22 09/04/22 25/04/22
06 13/06/22 25/06/22 17/07/22
07 01/08/22
08 19/09/22 24/09/22 09/10/22
09 07/11/22
10 26/12/22 16/12/22 31/01/23
11 13/02/23
12 03/04/23
 

В принципе, даты в столбце » А » — это мои данные.
Даты в B и C представляют собой интервалы. Итак, B1 и C1 означают «с 25/09/21 по 10/10/21».

Я легко могу сделать это в D1, чтобы сообщить мне, попадает ли дата в A1 между B1 и C1:

 D1 => =AND(A1 > B1, A1 < C1)
 

Но мне нужно, чтобы он сказал мне, попадает ли эта дата в КАКОЕ-либо из них. Итак, я могу написать:

 D1 => =OR(AND(A1>B1, A1<C1), AND(A1>B2, A1<C2), ..., AND(A3>B12, A1<C12))
 

Ладно, это некрасиво, но это делает свою работу. Я действительно думал, что мне это сойдет с рук.
Но…
Затем мне нужно повторить процесс для ВСЕХ из них (A1, B1, C1), сравнивая КАЖДЫЙ из них с КАЖДЫМ диапазоном справа. Подобный этому:

 D1 -> =OR(AND(A1>B1, A1<C1), AND(A1>B2, A1<C2), ..., AND(A1>B12, A1<C12))
D2 -> =OR(AND(A2>B1, A2<C1), AND(A2>B2, A2<C2), ..., AND(A2>B12, A2<C12))
D3 -> =OR(AND(A3>B1, A3<C1), AND(A3>B2, A3<C2), ..., AND(A3>B12, A3<C12))
 

И это ДОЛЖНО быть написано так (тьфу), так как умное вырезание и вставка все испортят.
Мое нынешнее решение совершенно ужасно.
Я назначаю это первому:

 =OR(
AND(A1>$C$1 ,A1<$D$1 ),
AND(A1>$C$2 ,A1<$D$2 ),
AND(A1>$C$3 ,A1<$D$3 ),
AND(A1>$C$4 ,A1<$D$4 ),
AND(A1>$C$5 ,A1<$D$5 ),
AND(A1>$C$6 ,A1<$D$6 ),
AND(A1>$C$7 ,A1<$D$7 ),
AND(A1>$C$8 ,A1<$D$8 ),
AND(A1>$C$9 ,A1<$D$9 ),
AND(A1>$C$10,A1<$D$10),
AND(A1>$C$11,A1<$D$11),
AND(A1>$C$12,A1<$D$12),
AND(A1>$C$13,A1<$D$13),
AND(A1>$C$14,A1<$D$14),
AND(A1>$C$15,A1<$D$15)
)
 

(Я придумал это, когда писал этот вопрос)
А затем снова вставьте его во все остальные. Таким образом, интеллектуальная вставка гарантирует, что A1 станет A2 во втором ряду, и так далее. Однако это просто ощущение. Такой … Уродливый.

Есть ли лучший способ сделать это?

Бонусный вопрос: как мне сделать дату в A1 КРАСНОЙ, если D1 «ИСТИННО»?

Заранее спасибо.

Ответ №1:

В D2 добавить формулу:

 =ArrayFormula(IF(LEN(A2:A),(A2:A>B2:B)*(A2:A<C2:C)>0,))
 

Бонус:
Добавьте правило условного форматирования для диапазона A2:A:

 =IF(LEN(A2),(A2>$B$2:B)*(A2<$C$2:C)>0,)
 

введите описание изображения здесь

Комментарии:

1. Как мне убедиться, что эта формула применима ко ВСЕМ записям? =IF(LEN(A2),(A2>$B$2:B)*(A2<$C$2:C)>0,) (тот, что о форматировании)

2. Формула @Merc применяется для каждой ячейки, Apply to range и относительные ссылки в формуле изменяются во всем указанном диапазоне.

Ответ №2:

Попробуйте эту формулу в ячейке D1 и перетащите вниз:

 =ArrayFormula(IF(SUM((A1>$B$1:$B$12)*(A1<$C$1:$C$12))>0;TRUE;FALSE))
 

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

 =D1=TRUE
 

Наконец, вот какой результат мы получили:

введите описание изображения здесь

Вы можете найти пример здесь.