Я искал решение для поиска значения в столбце слева от столбца со ссылочными значениями (следовательно, Vlookup не будет работать), и я придумал:
=INDEX(Data!$A$1:$F$400,MATCH($A5,Data!$D$1:$D$400,0),2)
где:
- значение поиска находится в столбце A текущего листа
- контрольные значения находятся в столбце D (# 4) на листе «Данные»
- искомыйзначения находятся в столбце B (# 2) на листе «Данные»
Это сработало хорошо, за исключением того, что теперь я хочу сделать диапазон опорных значений динамическим.
Пока чтолучшее, что я придумал, это:
=INDEX(data!$A$1:$F$400;MATCH($A5;INDIRECT(B$1):INDIRECT(CONCATENATE(LEFT(B$1;LEN(B$1)-LEN(ROW(INDIRECT(B$1))));ROW(INDIRECT(B$1))+B$2));0);B$3)
, где
в B1 У меня есть ссылка на исх.столбец значений в Листовых данных (или любых других)
= CELL («адрес»; данные! D: D)
в B2 У меня есть 400 - что являетсяколичество записей в диапазоне
и в B3 у меня есть 2 - это столбец, из которого я хотел бы извлечь значения
При этом моя окончательная формула будетвыглядят так:
=IFERROR(INDEX(data!$A$1:$F$400;MATCH($A5;INDIRECT(B$1):INDIRECT(CONCATENATE(LEFT(B$1;LEN(B$1)-LEN(ROW(INDIRECT(B$1))));ROW(INDIRECT(B$1))+B$2));0);B$3) & "";"")
... и это выглядит грязно ...
Трудность сделать это лучше, происходит от =CELL("address";data!D:D)
, который возвращает адрес левой верхней ячейкидиапазон, а не сам диапазон, следовательно, сложная строковая операция для генерации адреса конца диапазона
Есть идеи, если это можно еще больше упростить и сделать более аккуратным?