Для дальнейшего использования поиск значений может быть выполнен несколькими способами (например: VLOOKUP
и HLOOKUP
), однако очень мощная комбинация может быть сделана с использованием INDEX
и MATCH
, будучи, по крайней мере, такой же быстройкак другие функции и в лучшем случае намного быстрее.
INDEX
Функция INDEX
Функция возвращает значение или ссылку на значение из таблицы или диапазона и имеет следующие параметры:
- Массив ячеек (матрица), который требуется
- Индексномер строки, которую мы хотим вернуть, значение из которой требуется
- Индекс столбца, для которого мы хотим вернуть значение, из которого необязательно
Так что синтаксис будет выглядетьнапример: =INDEX(RangeOfCells,RowIndex,[ColumnIndex])
MATCH
Функция MATCH
выполняет поиск указанногоitem в диапазоне ячеек, а затем возвращает относительную позицию этого элемента в диапазоне. Он имеет следующие параметры:
- Требуемое значение поиска
- Массив поиска ячеек (матрица), который требуется
- Тип соответствия (-1,0,1), что является необязательным (автоматически вводится 1, если не указывается)
Таким образом, синтаксис будет выглядеть следующим образом: =MATCH(LookupValue,LookupArray,[MatchType])
INDEX
+ MATCH
Представим простой набор данных в Sheet1
, подобный следующему:
| Header1 | Header2 | Header3 | Header4 |
|---------|---------|---------|---------|
| ID1 | A | Val1 | Month1 |
| ID2 | B | Val2 | Month2 |
| ID3 | C | Val3 | Month3 |
| ID4 | D | Val4 | Month4 |
| ID5 | E | Val5 | Month5 |
И следующую настройку для поиска значенияв Sheet2
:
| Header1 | Header2 | Header3 | Header4 |
|---------|---------|---------|---------|
| ID3 | | | |
Теперь, если вас интересует значение от Header2
до Header4
путем поиска определенного значения в Header1
, вы можете применить следующую технику в B2
и перетащите вправо.
=INDEX(Sheet1!$B:$D,MATCH($A2,Sheet1!$A:$A,0),COLUMN(A1))
Результат будет выглядеть следующим образом:
| Header1 | Header2 | Header3 | Header4 |
|---------|---------|---------|---------|
| ID3 | C | Val3 | Month3 |
Если принять во внимание вышеизложенное о INDEX
и MATCH
, вы можете видеть, что я далINDEX
требуется массив ячеек (1-й параметр), используется MATCH
для возврата номера индекса строки (2-й параметр) и используется функция COLUMN
вдольс относительной ссылкой на ячейку для возврата номера индекса столбца (3-й параметр).
Функция MATCH
получила значение поиска (1-й параметр), массив поиска (2-й параметр), и я использовал matchвведите 0, который указывает функции искать точное совпадение.
VLOOKUP
В этом конкретном случае было бы возможно использовать функцию VLOOKUP
. Но я попытаюсь объяснить, почему я предпочел бы комбинацию INDEX
+ MATCH
:
VLOOKUP
дает вам небольшую гибкость, так как искомое значение должно находиться в крайнем левом столбцевашей матрицы поиска, тогда как INDEX
дает вам возможность вернуть любой столбец через третий параметр. - Как упоминалось ранее, в то время как
VLOOKUP
является более популярной опцией, INDEX
+ MATCH
более быстрый вариант. Если вы идете на скорости, то используйте это!
Дополнительные примечания:
В то время как это было просто простой разбивкойо том, как вы могли бы использовать комбинацию INDEX
+ MATCH
, есть еще несколько вещей, которые следует учитывать:
- В приведенном выше примере я использовал абсолютные, полуабсолютные и относительные ссылки на ячейки (обратите внимание на различия со знаком
$
). Используйте эту технику, чтобы иметь возможность перетаскивать формулу вправо, влево, вниз или вверх. - Настройте таблицу вместо матрицы. Вы можете ссылаться на столбцы в этой таблице вместо полных столбцов. Поиск только нескольких строк по сравнению со всеми возможными строками в столбце всегда (AFAIK) быстрее!
- Когда вы станете более опытным, вы заметите, что
INDEX
и MATCH
- это то, что выглядит как спасение жизнигораздо чаще разными способами:) - При поиске точного соответствия
MATCH
может возвращать ошибку, когда искомое значение просто не найдено. Это то, что нужно учитывать, когда вы видите любую ошибку #N/A
. Обходной путь - это ISNA
или IFERROR
функция в формуле.
Я надеюсь, что вы начали! Проверьте ссылки, которые я включил для получения более подробной информации.