ІНДЕКСНИЙ СПІВПРАЦЮВАННЯ в Excel для двовимірного пошуку

  • Поділитися Цим
Michael Brown

Урок демонструє кілька різних формул для виконання двовимірного пошуку в 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: Назвіть стовпці та рядки

    Найшвидший спосіб назвати кожен рядок і кожен стовпець у вашій таблиці - це наступний:

    1. Виділіть всю таблицю (в нашому випадку A1:E4).
    2. Про це йдеться на Формули у вкладці Визначені назви групу, натисніть Створити з виділення або натисніть комбінацію клавіш Ctrl + Shift + F3.
    3. В рамках проекту Створення назв з виділення виберіть у діалоговому вікні Верхній ряд і Ліва колонка, і натисніть OK.

    Це автоматично створює назви на основі заголовків рядків і стовпців. Однак є кілька застережень:

    • Якщо заголовки стовпців і/або рядків є числами або містять певні символи, які не допускаються в іменах Excel, імена для таких стовпців і рядків не будуть створені. Щоб переглянути список створених імен, відкрийте Диспетчер імен (Ctrl + F3). Якщо якісь імена відсутні, задайте їх вручну, як описано в розділі Як назвати діапазон в Excel.
    • Якщо деякі заголовки рядків або стовпців містять пробіли, пробіли будуть замінені, наприклад, символами підкреслення, Polar_bear .

    Для нашого прикладу таблиці Excel автоматично створив лише назви рядків. Назви стовпців доводиться створювати вручну, оскільки заголовки стовпців є числами. Щоб подолати це, ви можете просто випередити числа підкресленням, наприклад _1990 .

    В результаті маємо наступні іменовані діапазони:

    Частина 2: Складаємо формулу пошуку матриці

    Щоб витягнути значення на перетині даного рядка і стовпця, просто введіть одну з наведених нижче загальних формул у порожню комірку:

    = назва_рядка назва_колонки

    Або навпаки:

    = назва_колонки назва_рядка

    Наприклад, щоб отримати чисельність синіх китів у 1990 році, формула така ж проста:

    =Синій_кит _1990

    Якщо комусь потрібні більш детальні інструкції, наступні кроки допоможуть вам пройти цей процес:

    1. У комірці, де повинен з'явитися результат, введіть знак рівності (=).
    2. Почніть вводити назву, скажімо, цільового рядка, Синій_кит Після того, як ви введете кілька символів, Excel відобразить всі існуючі імена, які відповідають введеним вами. Двічі клацніть потрібне ім'я, щоб ввести його у формулу:
    3. Після назви рядка введіть a простір який працює в якості оператор перехрестя в даному випадку.
    4. Введіть назву цільового стовпця ( _1990 у нашому випадку).
    5. Як тільки будуть введені назви рядка і стовпця, Excel виділить відповідний рядок і стовпець у вашій таблиці, і ви натиснете клавішу Enter, щоб завершити введення формули:

    Пошук матриці завершено, і на наведеному нижче скріншоті показано результат:

    Ось як шукати в рядках і стовпцях в Excel. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!

    Доступні для завантаження

    Зразок робочої книги 2-вимірного пошуку

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.