Используйте эту формулу массива:
=IFERROR(INDEX($H$3:$H$6,AGGREGATE(15,7,(ROW($H$3:$H$6)-MIN(ROW($H$3:$H$6))+1)/(INDEX(INDEX(B:E,MATCH($A$19,A:A,0),0),N(IF({1},MODE.MULT(IF({1},MATCH($H$3:$H$6,$B$2:$E$2,0)*{1,1})))))=TRUE),ROW(1:1))),"")
Будучи формулой массива, вы должны поместить ее в B19, нажать Ctrl-Shift-Enter и затем скопировать вниз.
Единственное предостережение - этосписок заказов будет отсортирован по порядку.Это касается не числа в столбце I, а порядка в столбце H, в котором перечислены события.
N(IF({1},MODE.MULT(IF({1},MATCH($H$3:$H$6,$B$2:$E$2,0)*{1,1})))))
создает массив относительных номеров столбцов (B: E) в порядке их перечисления вСтолбец H.
INDEX(B:E,MATCH($A$19,A:A,0),0)
возвращает строку, в которой найден идентификатор клиента.
INDEX(INDEX(B:E,MATCH($A$19,A:A,0),0),N(IF({1},MODE.MULT(IF({1},MATCH($H$3:$H$6,$B$2:$E$2,0)*{1,1})))))
возвращает полный массив значений TRUE / FALSE из правильной строки в правильном порядке.
Затем агрегат возвращает первый относительный номер столбца, который имеет значение true, а затем второй и третий ... по мере их перетаскивания во внешний индекс.Который затем возвращает правильное значение из столбца H.
Если при правильном k
не найдено True, то он возвращает ошибку и IFERROR возвращает пустую строку.