Оглавление
В учебнике показано несколько различных формул для выполнения двумерного поиска в Excel. Просто просмотрите альтернативные варианты и выберите свой любимый :)
Когда вы ищете что-то в своих таблицах Excel, чаще всего вы ищете по вертикали в столбцах или по горизонтали в строках. Но иногда вам нужно искать по строкам и столбцам. Другими словами, вы стремитесь найти значение на пересечении определенной строки и столбца. Это называется матричный поиск (aka 2-мерный или Двусторонний поиск ), и этот учебник показывает, как это сделать 4 разными способами.
Формула Excel ИНДЕКС МАТЧ МАТЧ
Наиболее популярным способом двустороннего поиска в Excel является использование функции INDEX MATCH MATCH. Это вариация классической формулы INDEX MATCH, к которой добавляется еще одна функция MATCH, чтобы получить номера строки и столбца:
ИНДЕКС ( массив данных , MATCH ( vlookup_value , lookup_column_range , 0), MATCH ( значение hlookup , lookup_row_range , 0))В качестве примера, составим формулу, чтобы вытащить популяцию определенного животного в определенный год из таблицы ниже. Для начала определим все аргументы:
- массив данных - B2:E4 (ячейки с данными, не включая заголовки строк и столбцов)
- Vlookup_value - H1 (целевое животное)
- Lookup_column_range - A2:A4 (заголовки строк: названия животных) - A3:A4
- Hlookup_value - H2 (целевой год)
- Lookup_row_range - B1:E1 (заголовки столбцов: годы)
Сложите все аргументы вместе, и вы получите эту формулу для двустороннего поиска:
=INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))
Как работает эта формула
Хотя на первый взгляд она может показаться немного сложной, на самом деле логика формулы проста и понятна. Функция INDEX извлекает значение из массива данных на основе номеров строки и столбца, а две функции MATCH поставляют эти числа:
INDEX(B2:E4, row_num, column_num)
Здесь мы используем возможность MATCH(lookup_value, lookup_array, [match_type]) для возврата значения относительное положение из поиск_значения в массив поиска .
Итак, чтобы получить номер строки, мы ищем интересующее нас животное (H1) в заголовках строк (A2:A4):
MATCH(H1, A2:A4, 0)
Чтобы получить номер столбца, мы ищем целевой год (H2) в заголовках столбцов (B1:E1):
MATCH(H2, B1:E1, 0)
В обоих случаях мы ищем точное совпадение, устанавливая 3-й аргумент в 0.
В этом примере первый MATCH возвращает 2, потому что наше значение vlookup (белый медведь) находится в A3, которая является второй ячейкой в A2:A4. Второй MATCH возвращает 3, потому что значение hlookup (2000) находится в D1, которая является третьей ячейкой в B1:E1.
Учитывая вышесказанное, формула сводится к:
INDEX(B2:E4, 2, 3)
И вернуть значение на пересечении 2-й строки и 3-го столбца в массиве данных B2:E4, которое является значением в ячейке D3.
Формула VLOOKUP и MATCH для двухстороннего поиска
Еще один способ выполнить двумерный поиск в Excel - использовать комбинацию функций VLOOKUP и MATCH:
VLOOKUP( vlookup_value , массив_таблиц , MATCH( hlookup_value , lookup_row_range , 0), FALSE)Для нашей таблицы-образца формула имеет следующий вид:
=VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)
Где:
- Массив_таблиц - A2:E4 (ячейки с данными, включая заголовки строк)
- Vlookup_value - H1 (целевое животное)
- Hlookup_value - H2 (целевой год)
- Lookup_row_range - A1:E1 (заголовки столбцов: годы)
Как работает эта формула
Основу формулы составляет функция VLOOKUP, настроенная на точное соответствие (последний аргумент установлен в FALSE), которая ищет искомое значение (H1) в первом столбце массива таблицы (A2:E4) и возвращает значение из другого столбца той же строки. Чтобы определить, из какого столбца возвращать значение, используется функция MATCH, также настроенная на точное соответствие (последний аргумент установлен в 0):
MATCH(H2, A1:E1, 0)
MATCH ищет значение в H2 по заголовкам столбцов (A1:E1) и возвращает относительную позицию найденной ячейки. В нашем случае целевой год (2010) найден в E1, который является 5-м в массиве поиска. Таким образом, число 5 переходит к col_index_num аргумент VLOOKUP:
VLOOKUP(H1, A2:E4, 5, FALSE)
VLOOKUP берет его оттуда, находит точное совпадение для своего искомого значения в A2 и возвращает значение из 5-го столбца в той же строке, то есть из ячейки E2.
Важное замечание! Чтобы формула работала правильно, массив_таблиц (A2:E4) из VLOOKUP и массив поиска MATCH (A1:E1) должны иметь одинаковое количество столбцов, иначе число, переданное MATCH в col_index_num будет неправильным (не будет соответствовать положению колонки в массив_таблиц ).
Функция XLOOKUP для поиска в строках и столбцах
Недавно Microsoft представила еще одну функцию в Excel, которая призвана заменить все существующие функции поиска, такие как VLOOKUP, HLOOKUP и INDEX MATCH. Среди прочего, XLOOKUP может просматривать пересечение определенной строки и столбца:
XLOOKUP( vlookup_value , vlookup_column_range , XLOOKUP( hlookup_value , hlookup_row_range , массив данных ))Для нашего набора данных формула выглядит следующим образом:
=XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))
Примечание. В настоящее время XLOOKUP - это бета-функция, которая доступна только подписчикам Office 365, участвующим в программе Office Insiders.
Как работает эта формула
Формула использует возможность XLOOKUP возвращать всю строку или столбец. Внутренняя функция ищет целевой год в строке заголовка и возвращает все значения для этого года (в данном примере для 1980 года). Эти значения попадают в строку массив возврата аргумент внешнего XLOOKUP:
XLOOKUP(H1, A2:A4, {22000;25000;700}))
Внешняя функция XLOOKUP ищет целевое животное по заголовкам столбцов и возвращает значение в той же позиции из массива return_array.
Формула SUMPRODUCT для двустороннего поиска
Функция SUMPRODUCT подобна швейцарскому ножу в Excel - она может выполнять множество задач, выходящих за рамки ее предназначения, особенно когда речь идет об оценке нескольких критериев.
Чтобы найти два критерия, в строках и столбцах, используйте эту общую формулу:
СУММПРОДУКТ( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), массив данных )Чтобы выполнить двусторонний поиск в нашем наборе данных, формула выглядит следующим образом:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)
Приведенный ниже синтаксис тоже подойдет:
= СУММАРНЫЙ ПРОДУКТ((A2:A4=H1) * (B1:E1=H2) * B2:E4)
Как работает эта формула
В основе формулы лежит сравнение двух значений поиска с заголовками строк и столбцов (целевое животное в H1 со всеми названиями животных в A2:A4 и целевой год в H2 со всеми годами в B1:E1):
(A2:A4=H1) * (B1:E1=H2)
В результате получаются 2 массива значений TRUE и FALSE, где TRUE представляют совпадения:
{FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}
Операция умножения превращает значения TRUE и FALSE в 1 и 0 и создает двумерный массив из 4 столбцов и 3 строк (строки разделяются точкой с запятой, а каждый столбец данных - запятой):
{0,0,0,0;0,0,0,0;0,1,0,0}
Функция SUMPRODUCT умножает элементы приведенного выше массива на элементы B2:E4 в тех же позициях:
{0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}
А поскольку умножение на ноль дает ноль, в первом массиве сохраняется только элемент, соответствующий 1:
SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})
Наконец, SUMPRODUCT суммирует элементы результирующего массива и возвращает значение 2000.
Примечание. Если в вашей таблице более одной строки или/и заголовков столбцов с одинаковыми именами, итоговый массив будет содержать более одного числа, отличного от нуля, и все эти числа будут суммированы. В результате вы получите сумму значений, удовлетворяющих обоим критериям. Именно этим формула SUMPRODUCT отличается от формул INDEX MATCH MATCH и VLOOKUP, которые возвращают первое найденное совпадение.
Матричный поиск с именованными диапазонами (явное пересечение)
Еще один удивительно простой способ выполнения матричного поиска в Excel - использование именованных диапазонов. Вот как это делается:
Часть 1: Назовите столбцы и строки
Самый быстрый способ присвоить имя каждой строке и каждому столбцу в вашей таблице заключается в следующем:
- Выберите всю таблицу (A1:E4 в нашем случае).
- На Формулы во вкладке Определенные имена группу, нажмите Создать из выбора или нажмите сочетание клавиш Ctrl + Shift + F3.
- В Создание имен на основе выбора в диалоговом окне выберите Верхний ряд и Левая колонка, и нажмите OK.
Это автоматически создает имена на основе заголовков строк и столбцов. Однако есть несколько предостережений:
- Если заголовки ваших столбцов и/или строк представляют собой числа или содержат определенные символы, которые не допускаются в именах Excel, имена для таких столбцов и строк не будут созданы. Чтобы просмотреть список созданных имен, откройте Менеджер имен ( Ctrl + F3 ). Если некоторые имена отсутствуют, определите их вручную, как описано в разделе Как дать имя диапазону в Excel.
- Если некоторые заголовки строк или столбцов содержат пробелы, пробелы будут заменены, например, подчеркиванием, Полярный_медведь .
Для нашей таблицы Excel автоматически создал только имена строк. Имена столбцов нужно создавать вручную, потому что заголовки столбцов - это числа. Чтобы решить эту проблему, можно просто снабдить числа подчеркиванием, например _1990 .
В результате мы имеем следующие именованные диапазоны:
Часть 2: Составьте формулу поиска матрицы
Чтобы вытащить значение на пересечении заданных строки и столбца, просто введите одну из следующих общих формул в пустую ячейку:
= имя_строки имя_столбцаИли наоборот:
= имя_столбца имя_строкиНапример, чтобы получить популяцию синих китов в 1990 году, формула проста:
= Голубой_кит _1990
Если кому-то нужны более подробные инструкции, следующие шаги помогут вам пройти весь процесс:
- В ячейке, где должен появиться результат, введите знак равенства (=).
- Начните вводить имя целевой строки, например, Синий кит После того, как вы наберете пару символов, Excel отобразит все существующие имена, которые соответствуют введенным вами данным. Дважды щелкните нужное имя, чтобы ввести его в формулу:
- После имени строки введите пространство , который работает как оператор пересечения в этом случае.
- Введите имя целевого столбца ( _1990 в нашем случае).
- Как только имена строки и столбца будут введены, Excel выделит соответствующие строку и столбец в вашей таблице, и вы нажмете Enter, чтобы завершить формулу:
Ваш поиск матрицы завершен, и на приведенном ниже снимке экрана показан результат:
Вот как искать в строках и столбцах в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Доступные загрузки
Образец рабочей тетради по двумерному поиску