Как сделать динамический диапазон в формуле соответствия - PullRequest
0 голосов
/ 19 марта 2019

Я искал решение для поиска значения в столбце слева от столбца со ссылочными значениями (следовательно, 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), который возвращает адрес левой верхней ячейкидиапазон, а не сам диапазон, следовательно, сложная строковая операция для генерации адреса конца диапазона

Есть идеи, если это можно еще больше упростить и сделать более аккуратным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...