MS Excel vlookup ячейка, получить строку, получить самый правый столбец из этой строки - PullRequest
0 голосов
/ 09 ноября 2019

Похоже, вопрос это . Однако в моем случае мне нужен дополнительный шаг (я думаю). Что я не могу сделать, так это объединить эти два шага.

Допустим, структура данных выглядит следующим образом:

        Col A | Col B | Col C | Col D | Col E | 
Row 1   Val1  | Val2  | Val3  |
Row 2   Val4  | Val5  | Val6  |
Row 3   Val7  | Val8  | Val9  | Val10 | Val11

Формула, которую я ищу, должна возвращать результаты в соответствии с приведенными ниже сценариями.

1) В отдельной ячейке, если я введу значение (Val4);Выполните VLOOKUP для Val4 в Col A (который находится в строке 2), а затем верните самое правое значение, равное Val6 из Col C

2) В отдельной ячейке, если я введу значение (Val7);Сделайте VLOOKUP для Val7 в Col A (который находится в строке 3) и затем верните самое правильное значение, которое Val10 из Col D

В основном значения столбцов могут увеличиваться вправо. Поэтому мне нужно найти первое значение -> получить строку -> получить самое правильное значение в той же строке ....

Любая помощь очень ценится.

РЕДАКТИРОВАТЬ -1

После приведенных здесь указаний я на полпути пришел к решению. Первое, что нужно упомянуть, это то, что значения в строке могут увеличиваться (в моем примере данных он поднимается до столбца D. Но он может расти до столбца E, F и т. Д. ... в любой строке)

Теперь,давайте предположим, что значение, которое я ищу, находится в H1 . Я помещаю Val4 в H1 и формулу:

OFFSET(A1,MATCH($H$1,$A:$A,0),2,1,1). //Since I have hard coded 3rd parameter to 2; it'll give me Val6 (the last column in that row)

Здесь по MATCH ($ H $ 1, $ A: $ A, 0) возвращает строку,В моем примере он вернет строку 2, так как я ищу Val4 (в H1)

Теперь я должен найти столбцы в строке 2 и остановиться на ColC , поскольку это последнее значение вСтрока 2.

В функции OFFSET третий параметр ищет количество столбцов. Так что, если я могу изменить это значение в зависимости от строки;Проблема решена. Например;если я ищу Val7, в моей формуле OFFSET он сначала найдет строку 3. Но теперь в OFFSET 3-й параметр должен 4 (чтобы получить последнее значение - Val11).

Поскольку я ищу строки, используя MATCH($ H $ 1, $ A: $ A, 0);если я могу передать эту строку в CountA (), проблема решается следующим образом:

CountA(MATCH($H$1,$A:$A,0) : MATCH($H$1,$A:$A,0))

Это неверно. Поэтому теперь пытаюсь использовать функцию INDIRECT (), например:

COUNTA(INDIRECT(MATCH($H$1,$A:$A,0)&":"&MATCH($H$1,$A:$A,0)))

, которая в основном строит row: row как строку и передает ее CountA ()

. Это работает само по себе, но когда япоместите это в 3-й параметр функции OFFSET (), он не будет работать так, как должен.

РЕДАКТИРОВАТЬ - 2 (ОТВЕТ)

Получил для работы с формулой

OFFSET(A1,MATCH($H$1,$A:$A,0)-1,COUNTA(INDIRECT(MATCH($H$1,$A:$A,0)&":"&MATCH($H$1,$A:$A,0)))-1,1,1)

Единственная проблема заключается в поиске столбцов в строке, если у вас есть пустая ячейка, она не будет искать дальше с помощью COUNTA () .... но в противном случае она работает так, как я хочу

Ответы [ 2 ]

0 голосов
/ 10 ноября 2019

Получил для работы с формулой

OFFSET(A1,MATCH($H$1,$A:$A,0)-1,COUNTA(INDIRECT(MATCH($H$1,$A:$A,0)&":"&MATCH($H$1,$A:$A,0)))-1,1,1)

Единственная проблема заключается в поиске столбцов в строке, если у вас есть пустая ячейка, он не будет искать дальше, используя COUNTA () .... нов противном случае это работает так, как я хочу

0 голосов
/ 09 ноября 2019

Предположим, ваши данные размещены в A1:D3

Критерии введены в A5:A6, (макет похож на таблицу JvdV)

Если ваши данные имеют текстовое значение, формула в B5 скопированавниз:

=LOOKUP("zzz",INDEX($1:$3,SUMPRODUCT(($1:$3=A5)*ROW(A$1:A$3)),0))

Если ваши данные имеют числовое значение, формула в B5 скопирована:

=LOOKUP(9.9E+307,INDEX($1:$3,SUMPRODUCT(($1:$3=A5)*ROW(A$1:A$3)),0))

Если ваши данные смешаны в текстовом + числовом значении, формула в B5 скопировано:

=INDEX($1:$3,SUMPRODUCT(($1:$3=A5)*ROW(A$1:A$3)),AGGREGATE(14,6,COLUMN($1:$1)/(INDEX($1:$3,SUMPRODUCT(($1:$3=A5)*ROW(A$1:A$3)),0)<>""),1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...