Зміст
Урок демонструє кілька різних формул для виконання двовимірного пошуку в Excel. Просто перегляньте альтернативи та виберіть свій улюблений :)
Шукаючи щось у таблицях Excel, здебільшого ви шукаєте по вертикалі в стовпцях або по горизонталі в рядках. Але іноді вам потрібно шукати і в рядках, і в стовпцях. Іншими словами, ви прагнете знайти значення на перетині певного рядка і стовпця. Це називається пошук матриць (він же 2-вимірний або 2-сторонній пошук ), і цей посібник показує, як це зробити 4 різними способами.
Формула збігу індексів Excel INDEX MATCH Формула збігу індексів
Найпопулярніший спосіб виконати двосторонній пошук в Excel - це використовувати функцію СООТВЕТСТВИЕ. Це варіація класичної формули СООТВЕТСТВИЕ, до якої додається ще одна функція СООТВЕТСТВИЕ, щоб отримати як номери рядка, так і стовпця:
ІНДЕКС ( масив даних MATCH ( vlookup_value , діапазон_колонки_пошуку , 0), MATCH ( значення hlookup , lookup_row_range , 0))Для прикладу складемо формулу для витягування популяції певної тварини в певному році з наведеної нижче таблиці. Для початку визначимо всі аргументи:
- Data_array - B2:E4 (комірки даних, без урахування заголовків рядків і стовпців)
- Vlookup_value - H1 (цільова тварина)
- Діапазон_стовпця_пошуку - А2:А4 (заголовки рядків: назви тварин) - А3:А4
- Hlookup_value - H2 (цільовий рік)
- Діапазон_рядка_пошуку - B1:E1 (заголовки стовпців: роки)
Складіть всі аргументи разом і ви отримаєте цю формулу для двостороннього пошуку:
=INDEX(B2:E4, MATCH(H1, A2:A4, 0, MATCH(H2, B1:E1, 0))
Як працює ця формула
Хоча на перший погляд формула може виглядати дещо складною, логіка її побудови насправді проста і зрозуміла. Функція ІНДЕКС знаходить значення з масиву даних на основі номерів рядків і стовпців, а дві функції СРАВНИТЬ надають ці номери:
INDEX(B2:E4, номер_рядка, номер_стовпця)
Тут ми використовуємо здатність MATCH(lookup_value, lookup_array, [match_type]) повертати взаємне розташування з lookup_value в lookup_array .
Отже, щоб отримати номер рядка, шукаємо тварину, яка нас цікавить (Н1), по заголовкам рядків (А2:А4):
MATCH(H1, A2:A4, 0)
Щоб отримати номер стовпчика, ми шукаємо цільовий рік (H2) по заголовках стовпчиків (B1:E1):
MATCH(H2, B1:E1, 0)
В обох випадках ми шукаємо точний збіг, встановлюючи 3-й аргумент в 0.
У цьому прикладі перше збіг повертає 2, тому що наше значення vlookup (білий ведмідь) знаходиться в комірці A3, яка є другою коміркою в діапазоні A2:A4. Друге збіг повертає 3, тому що значення hlookup (2000) знаходиться в комірці D1, яка є третьою коміркою в діапазоні B1:E1.
Враховуючи вищевикладене, формула зводиться до:
INDEX(B2:E4, 2, 3)
І повернути значення на перетині 2-го рядка і 3-го стовпця в масиві даних B2:E4, яке є значенням в комірці D3.
Формула VLOOKUP і MATCH для двостороннього пошуку
Інший спосіб виконання двовимірного пошуку в Excel - це використання комбінації функцій VLOOKUP і MATCH:
VLOOKUP( vlookup_value , table_array , MATCH( hlookup_value , lookup_row_range , 0), FALSE)Для нашого прикладу формула набуває наступного вигляду:
=VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)
Де:
- Table_array - A2:E4 (комірки даних, включаючи заголовки рядків)
- Vlookup_value - H1 (цільова тварина)
- Hlookup_value - H2 (цільовий рік)
- Діапазон_рядка_пошуку - A1:E1 (заголовки колонок: роки)
Як працює ця формула
Ядром формули є функція VLOOKUP, налаштована на точний збіг (останній аргумент має значення ЛОЖЬ), яка шукає шукане значення (H1) у першому стовпчику масиву таблиці (A2:E4) і повертає значення з іншого стовпчика в тому ж рядку. Для визначення, з якого стовпчика повертати значення, використовується функція МАТЧ, яка також налаштована на точний збіг (останній аргумент має значення 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.
Важливо! Для коректної роботи формули, table_array (A2:E4) з VLOOKUP та lookup_array MATCH (A1:E1) повинні мати однакову кількість стовпців, інакше число, передане функцією MATCH в col_index_num буде некоректним (не відповідатиме положенню стовпчика в table_array ).
Функція 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 рік). Ці значення потрапляють у поле return_array аргумент зовнішньої XLOOKUP:
XLOOKUP(H1, A2:A4, {22000;25000;700}))
Зовнішня функція XLOOKUP шукає цільову тварину в заголовках стовпців і повертає значення в тій же позиції з масиву return_array.
Формула СУММПРОИЗВОДСТВА для двостороннього пошуку
Функція СУММПРОДУКТ - це як швейцарський ніж в Excel - вона може робити дуже багато речей поза своїм прямим призначенням, особливо коли мова йде про оцінку за кількома критеріями.
Для пошуку двох критеріїв, у рядках і стовпчиках, використовуйте цю загальну формулу:
SUMPRODUCT( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), масив даних )Для виконання двостороннього пошуку в нашому наборі даних формула виглядає наступним чином:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)
Наведений нижче синтаксис також буде працювати:
=SUMPRODUCT((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}
Функція СУММЕСЛИ перемножує елементи вищенаведеного масиву на елементи 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.
Примітка: якщо у вашій таблиці є кілька однакових заголовків рядків і/або стовпців, то підсумковий масив буде містити більше одного числа, відмінного від нуля, і всі ці числа будуть складені. У результаті ви отримаєте суму значень, що відповідають обом критеріям. Цим формула СУММЕСЛИ відрізняється від формул СРЗНАЙДЕНО і СРЗНАЙДЕНО, які повертають перший знайдений збіг.
Пошук матриці з іменованими діапазонами (явний перетин)
Ще один дивовижно простий спосіб пошуку матриць в Excel - це використання іменованих діапазонів. Ось як:
Частина 1: Назвіть стовпці та рядки
Найшвидший спосіб назвати кожен рядок і кожен стовпець у вашій таблиці - це наступний:
- Виділіть всю таблицю (в нашому випадку A1:E4).
- Про це йдеться на Формули у вкладці Визначені назви групу, натисніть Створити з виділення або натисніть комбінацію клавіш Ctrl + Shift + F3.
- В рамках проекту Створення назв з виділення виберіть у діалоговому вікні Верхній ряд і Ліва колонка, і натисніть OK.
Це автоматично створює назви на основі заголовків рядків і стовпців. Однак є кілька застережень:
- Якщо заголовки стовпців і/або рядків є числами або містять певні символи, які не допускаються в іменах Excel, імена для таких стовпців і рядків не будуть створені. Щоб переглянути список створених імен, відкрийте Диспетчер імен (Ctrl + F3). Якщо якісь імена відсутні, задайте їх вручну, як описано в розділі Як назвати діапазон в Excel.
- Якщо деякі заголовки рядків або стовпців містять пробіли, пробіли будуть замінені, наприклад, символами підкреслення, Polar_bear .
Для нашого прикладу таблиці Excel автоматично створив лише назви рядків. Назви стовпців доводиться створювати вручну, оскільки заголовки стовпців є числами. Щоб подолати це, ви можете просто випередити числа підкресленням, наприклад _1990 .
В результаті маємо наступні іменовані діапазони:
Частина 2: Складаємо формулу пошуку матриці
Щоб витягнути значення на перетині даного рядка і стовпця, просто введіть одну з наведених нижче загальних формул у порожню комірку:
= назва_рядка назва_колонкиАбо навпаки:
= назва_колонки назва_рядкаНаприклад, щоб отримати чисельність синіх китів у 1990 році, формула така ж проста:
=Синій_кит _1990
Якщо комусь потрібні більш детальні інструкції, наступні кроки допоможуть вам пройти цей процес:
- У комірці, де повинен з'явитися результат, введіть знак рівності (=).
- Почніть вводити назву, скажімо, цільового рядка, Синій_кит Після того, як ви введете кілька символів, Excel відобразить всі існуючі імена, які відповідають введеним вами. Двічі клацніть потрібне ім'я, щоб ввести його у формулу:
- Після назви рядка введіть a простір який працює в якості оператор перехрестя в даному випадку.
- Введіть назву цільового стовпця ( _1990 у нашому випадку).
- Як тільки будуть введені назви рядка і стовпця, Excel виділить відповідний рядок і стовпець у вашій таблиці, і ви натиснете клавішу Enter, щоб завершити введення формули:
Пошук матриці завершено, і на наведеному нижче скріншоті показано результат:
Ось як шукати в рядках і стовпцях в Excel. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!
Доступні для завантаження
Зразок робочої книги 2-вимірного пошуку