Соответствующие элементы всегда будут последовательными?Кажется, так, поскольку вы сравниваете каждую ячейку с ячейкой над ней прямо в логике формулы.Это нарушает [неписанное?] Правило нормализации электронных таблиц;значения адреса сами по себе, как правило, не должны рассматриваться как данные.
ЕСЛИ вы привержены этому, рассматривали ли вы явное использование местоположения в качестве источника данных?Пример:
=ARRAYFORMULA(IFS(
NOT(LEN(A3:A40)),,
ROW(A3:A40)-3-MATCH(A3:A40,A$3:A$40,0)<=VLOOKUP(VLOOKUP(A3:A40,Items!$A$2:$D,2,false),DataPerColor!$A$2:$B,2,false),ROW(A3:A40)-3-MATCH(A3:A40,A$3:A$40,0),
true,
))
Так же, как ваши формулы, все, что делает на английском языке, это:
for each row,
if there's no Item, don't output any ItemData,
if the number that belongs in this cell¹ is less than or equal to the lookup, print it,
otherwise, don't output any ItemData
Но тогда что такое ¹ «число, которое принадлежит этой ячейке» и как мы можемрассчитать без использования столбца B?Я злоупотребляю местами вещей, чтобы получить это.Если посмотреть вниз по строке B, каждое появившееся число будет просто:
this row's number, minus
the row where items start [always 3], minus
the row number [in just the Item rows] of the first row containing this row's Item
Используя второй-последний ItemC в качестве примера: первый ItemC является списком 16-го элемента, итот, который мы ищем… «второй-последний ItemC» находится в строке 21 листа.21-3-16 = 2 ... число, которое вы хотели.
Если вы можете это пережить, это одна формула и работает в соответствии с вашими требованиями.