2017-02-20 6 views
0

У меня есть один столбец данных на листе, и каждая ячейка содержит значение, которое может быть найдено в массиве на другом листе. Я пытаюсь найти функцию, которая, если она найдет значение в массиве в листе 2 из столбца в листе 1, затем возвращает значение в крайнем левом столбце.Использование индекса и соответствия для поиска по вертикали и по горизонтали

Вот пример данных:

листа 1

| AH2377507 | 
| 2188622 | 
| EA404278 | 
| AH885430 | 

листа 2

aaa | 1874379 | AH2377507 | EA2377507 | PS2377507 | 67004276 | 949529 | AH2065634 
bbb | 1938614 | 2186486 | 2188622 | 2188708 
ccc | 919973 | AH404278 | EA404278 | PS404278 | 2188746 
ddd | 960929 | AH885430 | EA885430 | PS885430 

Так что, когда '2188622' найден в листе 2, она возвращает «В».

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

Я попытался вложить vlookp в hlookup и vise-versa, а также вложить hlookup в индекс/матч, но ни одна из этих идей не работала.

ответ

1

Вам нужно будет немного больше, чем просто INDEX/MATCH

=INDEX(Sheet2!$A$1:$A$4,SUMPRODUCT((Sheet2!$B$1:$F$4=Sheet1!$A1)*ROW(Sheet2!$A$1:$A$4))) 

Если предположить, что Лист1 данные в A1:A4 и ваш Sheet2 данные в A1:F4.

ПримечаниеROW(Sheet2!$A$1:$A$4) в конце не имеет ничего общего с вашими данными. Диапазон должен всегда начинаться с A1, и если у вас есть 10 записей в Sheet2, то он должен заканчиваться на A10, например.


Подробнее ...

Поскольку ваше значение поиска происходит от 2-го массива, а не в один ряд/Colum, вы не можете использовать MATCH. Нам нужно моделировать матч, хотя так что где SUMPRODUCT приходит. Если вы имели следующий массив в A1:B2

a a 
a b 

Мы можем выполнить логическую операцию A1:B2="b".Это создает массив как этот

FALSE FALSE 
FALSE TRUE 

Вспоминая, что TRUE=1 и FALSE=0 если умножить ROW(A1:A2) то, что массив становится

0*1 0*1 = 0 0 
0*2 1*2 = 0 2 

Таким образом, вы можете увидеть SUM этого массива 2 что именно позиция (это то, что должно было вернуть MATCH)

Итак, мы завершаем все это в SUMPRODUCT li ке это

=SUMPRODUCT((A1:B2="b")*ROW(A1:A2)) 

И вы получили ваш ответ

+1

Могли ваш 'СТРОКА (Лист1 $ A $ 1: $ A $ 4)' быть 'СТРОКА (Лист2 $ A $ 1: $ A $ 4)' ? - это сделало бы более очевидным, что '$ A $ 4' должен быть связан с количеством элементов в' Sheet2'. И должен '... = Sheet1! $ A $ 1' быть' ... = Sheet1! $ A1', чтобы формула могла быть скопирована в другие строки? – YowE3K

+0

Мне пришлось об этом подумать, но да, согласен. Спасибо! – CallumDA

+0

Кто-то прервал меня рабочим вопросом после того, как я прочитал ваш оригинальный комментарий, но прежде чем у меня появился шанс ответить - теперь я рад, что они это сделали - это означало, что мне не нужно было придумывать объяснение: D – YowE3K

Смежные вопросы