| A | B | C | D |
--|----|-----------------|---|---------|---
1 | |Brand A | | Criteria|
2 | |Production Line1 | | P2 |
3 | P1 | 500 | | |
4 | P1 | 100 | | Result |
5 | P1 | 800 | | Brand B |
6 | | | | |
7 | |Brand B | | |
8 | |Production Line1 | | |
9 | P2 | 700 | | |
10| P2 | 300 | | |
11| | | | |
12| |Brand C | | |
13| |Production Line2 | | |
14| P3 | 200 | | |
15| P3 | 500 | | |
16| P3 | 800 | | |
17| P3 | 300 | | |
18| | | | |
В Cell D5 я использую эту формулу для извлечения brand на основе критериев в Cell D2:
D5 = OFFSET(XLOOKUP(D2;A1:A18;B1:B18;NA();0);-2;0)
Все это работает отлично
Теперь может случиться так, что пользователь вставит строки между
ряд 1 и 2 или
ряд 7 и 8 или
ряд 12 и 13.
Если это произойдет, приведенная выше формула больше не будет работать, поскольку она привязана к -2.
Есть ли у вас идеи, есть ли способ сделать его динамическим, чтобы он всегда работал независимо от того, сколько строк пользователь вставляет между ними?
Да, но даже с этим решением у меня проблема: при вставке строк оно не работает.
Да, это справедливо, но суть моего комментария не в этом;)


Вы описали, как пользователи могут вводить строки между строками, описывающими бренд и производственную линию. Поэтому можно с уверенностью сказать, что название бренда будет на две позиции ниже предыдущего критерия:
Формула в D2:
=IFERROR(INDEX(B:B,XMATCH("?*",A1:INDEX(A:A,XMATCH(D2,A:A)-1),2,-1)+2),B1)
Другой вариант заключается в том, что все строки в B:B, начиная с бренда, заполняются:
Формула в D5:
=INDEX(B:B,XMATCH("",B1:INDEX(B:B,XMATCH(D2,A:A)-1)&"",,-1)+1)
Видите ли вы, что существует энергонезависимая альтернатива вашему предыдущему вопросу?