Зміст
У цьому уроці показано, як використовувати ІНДЕКС і СХОЖІСТЬ в Excel і чим вони кращі за ВПЛИВ.
У кількох недавніх статтях ми спробували пояснити основи функції VLOOKUP для початківців і навести більш складні приклади формул VLOOKUP для досвідчених користувачів. А зараз я спробую якщо не відрадити вас від використання VLOOKUP, то хоча б показати альтернативний спосіб вертикального пошуку в Excel.
"Навіщо мені це потрібно?" - запитаєте ви. Тому що VLOOKUP має численні обмеження, які в багатьох ситуаціях можуть перешкодити вам отримати бажаний результат. З іншого боку, комбінація INDEX MATCH більш гнучка і має безліч чудових можливостей, які роблять її кращою за VLOOKUP у багатьох відношеннях.
Функції ІНДЕКС і СРЗНАЙТИ в Excel - основи
Оскільки метою даного уроку є демонстрація альтернативного способу виконання vlookup в Excel за допомогою комбінації функцій INDEX і MATCH, ми не будемо детально зупинятися на їх синтаксисі і використанні. Ми розглянемо лише мінімум, необхідний для розуміння загальної ідеї, а потім детально розглянемо приклади формул, які розкривають всі переваги використання INDEX MATCH замість VLOOKUP.
Функція INDEX - синтаксис та використання
Функція ІНДЕКС Excel повертає значення в масиві на основі вказаних номерів рядків і стовпців. Синтаксис функції ІНДЕКС простий:
INDEX(array, row_num, [column_num])Ось дуже просте пояснення кожного параметру:
- масив - діапазон комірок, з яких потрібно повернути значення.
- row_num - номер рядка в масиві, з якого потрібно повернути значення. Якщо не вказано, то обов'язковим є стовпець_num.
- column_num - номер стовпця в масиві, з якого потрібно повернути значення. Якщо не вказано, то row_num є обов'язковим.
Для отримання додаткової інформації, будь ласка, зверніться до функції INDEX в Excel.
А ось приклад формули INDEX у найпростішому вигляді:
=INDEX(A1:C10,2,3)
Формула виконує пошук у комірках з А1 по С10 і повертає значення комірки у 2-му рядку та 3-му стовпчику, тобто комірки С2.
Дуже просто, чи не так? Однак, працюючи з реальними даними, ви навряд чи знаєте, який саме рядок і стовпець вам потрібен, і саме тут в нагоді стає функція MATCH.
Функція MATCH - синтаксис та використання
Функція ПОИСК в Excel виконує пошук шуканого значення в діапазоні клітинок і повертає значення взаємне розташування від цього значення в діапазоні.
Синтаксис функції МАТЧ наступний:
MATCH(значення_пошуку, масив_пошуку, [тип_відповідності])- lookup_value - число або текстове значення, яке ви шукаєте.
- lookup_array - ряд камер, в яких проводяться обшуки.
- match_type - вказує, чи повертати точний збіг або найближчий збіг:
- 1 або пропущено - знаходить найбільше значення, яке менше або дорівнює шуканому значенню. Вимагає сортування масиву пошуку за зростанням.
- 0 - знаходить перше значення, яке точно дорівнює шуканому значенню. У комбінації INDEX / MATCH майже завжди потрібен точний збіг, тому ви встановлюєте третій аргумент функції MATCH рівним 0.
- -1 - знаходить найменше значення, яке більше або дорівнює шуканому значенню. Вимагає сортування масиву пошуку за спаданням.
Наприклад, якщо діапазон B1:B3 містить значення "New-York", "Paris", "London", наведена нижче формула повертає число 3, оскільки "London" є третім записом у діапазоні:
=MATCH("London",B1:B3,0)
Для отримання додаткової інформації, будь ласка, зверніться до функції СПІВПАДІННЯ в Excel.
На перший погляд, корисність функції СООТВЕТСТВИЕ може здатися сумнівною. Кого хвилює позиція значення в діапазоні? Нам потрібно знати саме значення.
Нагадаю, що відносне розташування шуканого значення (тобто номери рядка і стовпця) - це саме те, що потрібно передати в row_num і column_num Як ви пам'ятаєте, ІНДЕКС Excel може знайти значення на стику заданого рядка і стовпця, але не може визначити, який саме рядок і стовпець вам потрібен.
Як використовувати функцію ПІДІБРАТИ ІНДЕКС в Excel
Тепер, коли ви знаєте основи, я вважаю, що ви вже почали розуміти, як MATCH і INDEX працюють разом. У двох словах, INDEX знаходить шукане значення за номерами стовпців і рядків, а MATCH надає ці номери. Ось і все!
Для вертикального пошуку ви використовуєте функцію СООТВЕТСТВИЕ тільки для визначення номера рядка, а діапазон стовпців передаєте безпосередньо в ІНДЕКС:
ІНДЕКС ( стовпець для повернення значення з MATCH ( шукане значення , стовпчик, на який можна орієнтуватися , 0))Все ще не можете розібратися? Можливо, вам буде легше зрозуміти на прикладі. Припустимо, у вас є список національних столиць та їх населення:
Щоб знайти населення певної столиці, скажімо, столиці Японії, скористайтеся наступною формулою СРЗНАЙТИ ПОКАЗНИК:
=INDEX(C2:C10, MATCH("Японія", A2:A10, 0))
Тепер проаналізуємо, що насправді робить кожна складова цієї формули:
- Функція МАТЧ шукає шукане значення "Японія" в діапазоні А2:А10 і повертає число 3, тому що "Японія" стоїть третім в масиві пошуку.
- Номер рядка переходить безпосередньо до row_num аргумент INDEX з вказівкою повернути значення з цього рядка.
Таким чином, наведена вище формула перетворюється на простий ІНДЕКС(С2:С,3), який каже шукати в комірках з С2 по С10 і витягувати значення з 3-ї комірки в цьому діапазоні, тобто з С4, тому що ми починаємо відлік з другого рядка.
Не хочете жорстко кодувати місто у формулі - введіть його в якусь комірку, наприклад, F1, задайте посилання на комірку в МАТЧ, і ви отримаєте динамічну формулу пошуку:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Важливе зауваження! Кількість рядків у масив аргумент INDEX повинен співпадати з кількістю рядків у файлі lookup_array аргумент MATCH, інакше формула видасть некоректний результат.
Зачекайте, зачекайте... чому б нам просто не скористатися наступною формулою Vlookup? Який сенс витрачати час на те, щоб розібратися в хитросплетіннях Excel MATCH INDEX?
=VLOOKUP(F1, A2:C10, 3, FALSE)
В даному випадку взагалі немає сенсу :) Цей простий приклад наведено лише в демонстраційних цілях, щоб ви відчули, як працюють разом функції INDEX і MATCH. Інші приклади, які будуть наведені нижче, покажуть вам реальну силу цієї комбінації, яка легко справляється з багатьма складними сценаріями, коли VLOOKUP спотикається.
Чайові:
- В Excel 365 і Excel 2021 можна використовувати більш сучасну формулу INDEX XMATCH.
- Приклади формул з ІНДЕКСНИМ СПІВПАДІННЯМ для Google Таблиць див. у цій статті.
INDEX MATCH проти VLOOKUP
Вирішуючи, яку функцію використовувати для вертикального пошуку, більшість гуру Excel сходяться на думці, що INDEX MATCH набагато краще, ніж VLOOKUP. Однак багато хто все одно залишається з VLOOKUP, по-перше, тому що вона простіше, а по-друге, тому що не до кінця розуміють всі переваги використання формули INDEX MATCH в Excel. Без такого розуміння ніхто не готовий витрачати свій час на вивчення більш складної формули.синтаксис.
Нижче я вкажу на ключові переваги МАТЧ-ІНДЕКС перед СХОЖДЕНИЕМ, а ви вже вирішуйте, чи є він гідним доповненням до вашого арсеналу Excel.
4 основні причини використовувати INDEX MATCH замість VLOOKUP
- Пошук справа наліво. Як відомо будь-якому освіченому користувачеві, VLOOKUP не може шукати зліва, тобто шукане значення завжди повинно знаходитися в крайньому лівому стовпчику таблиці. INDEX MATCH може легко виконувати пошук зліва! Наступний приклад показує це в дії: Як Vlookup значення зліва в Excel.
- Вставляйте або видаляйте стовпці безпечно. Формули VLOOKUP ламаються або видають некоректні результати при видаленні або додаванні нового стовпця в таблицю пошуку, оскільки синтаксис VLOOKUP вимагає вказівки індексного номера стовпця, з якого потрібно витягти дані. Природно, при додаванні або видаленні стовпців індексний номер змінюється.
За допомогою INDEX MATCH ви вказуєте діапазон стовпців, що повертаються, а не номер індексу. В результаті ви можете вставляти і видаляти стільки стовпців, скільки вам потрібно, не турбуючись про оновлення кожної пов'язаної з ними формули.
- Розмір шуканого значення не обмежений. При використанні функції VLOOKUP загальна довжина критеріїв пошуку не може перевищувати 255 символів, інакше ви отримаєте помилку #VALUE! Отже, якщо ваш набір даних містить довгі рядки, єдиним робочим рішенням є INDEX MATCH.
- Більш висока швидкість обробки. Якщо ваші таблиці відносно невеликі, то навряд чи буде суттєва різниця в продуктивності Excel. Але якщо ваші робочі таблиці містять сотні або тисячі рядків, а отже, сотні або тисячі формул, MATCH INDEX буде працювати набагато швидше, ніж VLOOKUP, тому що Excel повинен буде обробляти тільки стовпці пошуку і повернення, а не весь масив таблиці.
Вплив СРЗНАЧ на продуктивність Excel може бути особливо помітним, якщо у вашій книзі містяться складні масивні формули, такі як СРЗНАЧ і СУММ. Справа в тому, що перевірка кожного значення в масиві вимагає окремого виклику функції СРЗНАЧ. Отже, чим більше значень містить ваш масив і чим більше масивних формул у вашій книзі, тим повільніше працює Excel.
Співставлення індексів Excel - приклади формул
Знаючи причини вивчення функції МАТЧ ІНДЕКС, давайте перейдемо до найцікавішого і подивимося, як можна застосувати теоретичні знання на практиці.
Формула INDEX MATCH для пошуку справа наліво
Як вже було сказано, VLOOKUP не може дивитися зліва від себе. Таким чином, якщо ваші шукані значення не знаходяться в крайньому лівому стовпчику, немає шансів, що формула VLOOKUP принесе вам бажаний результат. Функція INDEX MATCH в Excel є більш універсальною і не має особливого значення, де розташовані стовпчики пошуку та повернення.
Для цього прикладу ми додамо стовпчик "Ранг" зліва від нашої вибіркової таблиці і спробуємо з'ясувати, яке місце за чисельністю населення займає столиця Росії Москва.
Зі значенням пошуку в G1, використовуйте наступну формулу для пошуку в C2:C10 і поверніть відповідне значення з A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Порада: Якщо ви плануєте використовувати формулу ПІДІБРАТИ ІНДЕКС для більш ніж однієї комірки, обов'язково зафіксуйте обидва діапазони абсолютними посиланнями на комірки (наприклад, $A$2:$A$10 і $C$2:4C$10), щоб вони не були спотворені при копіюванні формули.
ІНДЕКСНИЙ СПІВПАДІННЯ СПІВПАДІННЯ для пошуку в рядках і стовпцях
У наведених вище прикладах ми використовували INDEX MATCH в якості заміни класичного VLOOKUP для повернення значення із заздалегідь визначеного діапазону з одним стовпцем. Але що робити, якщо вам потрібно шукати в декількох рядках і стовпцях? Іншими словами, що робити, якщо ви хочете виконати так званий матриця або двосторонній шукати?
Це може здатися складним, але формула дуже схожа на базову функцію Excel "ПІДІБРАТИ ІНДЕКС", з однією лише відмінністю. Вгадайте, в чому вона полягає?
Просто використовуйте дві функції МАТЧ - одну для отримання номера рядка, а іншу для отримання номера стовпця. І я вітаю тих з вас, хто вгадав :)
INDEX (array, MATCH ( значення vlookup , стовпчик, на який можна орієнтуватися , 0), MATCH ( значення hlookup , ряд, на який можна рівнятися , 0))А тепер, будь ласка, подивіться на наведену нижче таблицю і давайте побудуємо формулу ІНДЕКС МАТЧ, щоб знайти чисельність населення (в мільйонах) в даній країні для даного року.
З цільовою країною в G1 (значення vlookup) та цільовим роком в G2 (значення hlookup) формула набуває такого вигляду:
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Як працює ця формула
Щоразу, коли вам потрібно зрозуміти складну формулу Excel, розбийте її на менші частини і подивіться, що робить кожна окрема функція:
MATCH(G1,A2:A11,0)
- шукає в комірках A2:A11 значення в комірці G1 ("Китай") і повертає його позицію, яка дорівнює 2.
MATCH(G2,B1:D1,0))
- здійснює перебір комірок B1:D1, щоб отримати позицію значення в комірці G2 ("2015"), яка дорівнює 3.
Наведені вище номери рядків і стовпців відносяться до відповідних аргументів функції INDEX:
INDEX(B2:D11, 2, 3)
В результаті отримуємо значення на перетині 2-го рядка і 3-го стовпця в діапазоні B2:D11, яке і є значенням в комірці D3. Легко? Так!
Excel INDEX MATCH для пошуку за кількома критеріями
Якщо у вас була можливість прочитати наш підручник з пошуку в Excel, ви, ймовірно, вже протестували формулу для пошуку за кількома критеріями. Однак суттєвим обмеженням такого підходу є необхідність додавання допоміжного стовпця. Хороша новина полягає в тому, що функція ПОИСК ПО ИНДЕКСУ в Excel також може шукати за двома або більше критеріями, не змінюючи та не реструктуризуючи ваші вихідні дані!
Ось загальна формула INDEX MATCH з декількома критеріями:
{=INDEX( діапазон_повернення , MATCH(1, ( критерії1 = діапазон1 ) * ( критерії2 = діапазон2 ), 0))}Примітка. Це формула масиву, яку необхідно заповнювати за допомогою комбінації клавіш Ctrl + Shift + Enter.
У прикладі таблиці нижче, припустимо, ви хочете знайти суму на основі 2 критеріїв, Замовник і Продукт .
Наступна формула INDEX MATCH працює дуже добре:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Де C2:C10 - діапазон, з якого повертається значення, F1 - критерій1, A2:A10 - діапазон для порівняння з критерієм1, F2 - критерій2 і B2:B10 - діапазон для порівняння з критерієм2.
Не забудьте правильно ввести формулу, натиснувши клавіші Ctrl + Shift + Enter, і Excel автоматично візьме її у фігурні дужки, як показано на скріншоті:
Якщо ви не бажаєте використовувати формули масивів у своїх робочих аркушах, додайте до формули ще одну функцію INDEX і завершіть її звичайним натисканням клавіші Enter:
Як працюють ці формули
Формули використовують той самий підхід, що і базова функція ІНДЕКС Збіг, яка переглядає один стовпець. Для оцінки декількох критеріїв ви створюєте два або більше масивів значень ІСТИНА і НЕПРАВДА, які представляють збіги і невідповідності для кожного окремого критерію, а потім перемножуєте відповідні елементи цих масивів. Операція множення перетворює значення ІСТИНА і НЕПРАВДА в 1 і 0,відповідно, і формує масив, де 1 відповідають рядкам, що відповідають усім критеріям. Функція МАТЧ зі значенням пошуку 1 знаходить першу "1" в масиві і передає її позицію функції ІНДЕКС, яка повертає значення в цьому рядку із зазначеного стовпця.
Формула без масиву покладається на здатність функції INDEX обробляти масиви нативно. Другий INDEX налаштований на 0 row_num щоб він передав весь масив стовпців в MATCH.
Це пояснення логіки формули на високому рівні. Для більш детальної інформації, будь ласка, дивіться Excel ПІДБІР ПОКАЗНИКІВ за кількома критеріями.
Співставлення індексів Excel з середніми, максимальними, мінімальними значеннями
В Microsoft Excel є спеціальні функції для знаходження мінімального, максимального і середнього значення в діапазоні. Але що робити, якщо потрібно отримати значення з іншої комірки, яка пов'язана з цими значеннями? У цьому випадку використовуйте функцію МАКС, МИН або СРЗНАЧ разом з функцією СРЗНАЧ.
Збіг індексу з MAX
Щоб знайти найбільше значення в стовпці D і повернути значення зі стовпця C в тому ж рядку, використовуйте цю формулу:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
Збіг індексу з MIN
Щоб знайти найменше значення в колонці D і витягнути пов'язане з ним значення з колонки C, скористайтеся цим:
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
Збіг індексу із середнім значенням
Для того, щоб знайти найближче до середнього значення в D2:D10 та отримати відповідне значення в колонці С, слід скористатися такою формулою:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
Залежно від того, як організовані ваші дані, передайте 1 або -1 в третій аргумент (match_type) функції MATCH:
- Якщо ваш стовпець пошуку (стовпець D в нашому випадку) відсортований висхідний Формула обчислить найбільше значення, тобто менше, ніж або дорівнює середньому значенню.
- Якщо ваш стовпець пошуку відсортований за спаданням введіть -1. Формула обчислить найменше значення, тобто більше, ніж або дорівнює середньому значенню.
- Якщо ваш масив пошуку містить значення точно дорівнює до середнього значення, можна ввести 0 для точного збігу. Сортування не потрібне.
У нашому прикладі населення в колонці D відсортовано в порядку спадання, тому ми використовуємо -1 для типу збігу. В результаті ми отримуємо "Токіо", оскільки його населення (13 189 000) є найближчим збігом, що перевищує середній показник (12 269 006).
Можливо, вам буде цікаво дізнатися, що VLOOKUP теж може виконувати такі обчислення, але у вигляді формули масиву: VLOOKUP з AVERAGE, MAX, MIN.
Використання INDEX MATCH з IFNA / IFERROR
Як ви, напевно, помітили, якщо формула INDEX MATCH в Excel не може знайти шукане значення, вона видає помилку #N/A. Якщо ви хочете замінити стандартне позначення помилки на щось більш змістовне, оберніть формулу INDEX MATCH у функцію IFNA. Наприклад:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Співпадіння не знайдено")
І тепер, якщо хтось введе таблицю пошуку, якої не існує в діапазоні пошуку, формула прямо повідомить користувачеві, що збігів не знайдено:
Якщо ви хочете відловлювати всі помилки, а не тільки #N/A, використовуйте функцію IFERROR замість IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Ой, щось пішло не так!")
Будь ласка, майте на увазі, що в багатьох ситуаціях може бути нерозумно приховувати всі помилки, оскільки вони попереджають вас про можливі недоліки у вашій формулі.
Ось так можна використовувати ІНДЕКС і СХОЖІСТЬ в Excel. Сподіваюся, наші приклади формул виявляться корисними для вас і чекаю вас на нашому блозі наступного тижня!
Практичний посібник для завантаження
Приклади Excel INDEX MATCH (файл .xlsx)