#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
Наконец, вот какой результат мы получили: