Нахождение ближайшего большего из отфильтрованного диапазона - PullRequest
1 голос
/ 23 октября 2019

У меня есть лист с информацией о времени работы двух машин. Имеет три основных столбца: «А» - номер машины;«B» - время начала и дата операции;и «C» - время окончания и дата операции.

Я пытаюсь написать формулу (четвертый столбец), которая определяет «время начала» следующей операции - в зависимости от номера машины. Для этого мне нужно ввести «время окончания» и найти ближайшее большее «время начала» из другой строки - в зависимости от номера машины.

Я пробовал два способа сделать это, ни один не работал100% правильно.

Сначала я «фильтрую» диапазон B, обусловленный A. Затем я вставляю этот фильтрованный диапазон в формулу, которая ищет ближайшее большее значение.

Пример листа будет следующим (цвета только для целей отслеживания / отладки, они не обязательно должны быть в формуле):

enter image description here

Вот две формулы, которые я пробовал:

=small(filter(B:B;A:A=A1);COUNTIF(filter(B:B;A:A=A1);"<"&C1)+1)

=INDEX(filter(B:B;A:A=A1);MATCH(MIN(ABS(filter(B:B;A:A=A1)-C1));ABS(filter(B:B;A:A=A1)-C1);0))

В первом примере верны только последние результаты. Остальная часть столбца повторяла одно и то же значение.

Второе является ошибочным, иногда приносит самое близкое большее, иногда самое близкое меньшее число, но работает лучше, чем первое.

1 Ответ

1 голос
/ 23 октября 2019

попробовать:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A&
 COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))+1; FILTER({A2:A&
 COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))\ 
 TEXT(B2:B; "dd/mm/yyyy hh:mm:ss")}; 
 COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))>1); 2; 0)))

0

...