Зміст
Ці приклади навчать вас виконувати Vlookup за кількома критеріями, повертати конкретний екземпляр або всі збіги, робити динамічний Vlookup на декількох аркушах і багато іншого.
Це друга частина серії статей, яка допоможе вам освоїти можливості функції Вставка в Excel. Приклади припускають, що ви знаєте, як працює ця функція. Якщо ні, то є сенс почати з основних способів використання Вставки в Excel.
Перш ніж рухатися далі, дозвольте коротко нагадати синтаксис:
VLOOKUP(значення_пошуку, масив_таблиці, номер_індексу_колон, [діапазон_пошуку])Тепер, коли всі знаходяться на одній сторінці, давайте розглянемо приклади розширених формул VLOOKUP:
Як переглянути декілька критеріїв
Функція VLOOKUP в Excel дійсно корисна, коли мова йде про пошук певного значення в базі даних. Однак їй не вистачає важливої особливості - її синтаксис дозволяє використовувати тільки одне значення для пошуку. Але що робити, якщо ви хочете шукати за кількома умовами? У нас є кілька різних рішень на ваш вибір.
Формула 1. VLOOKUP з двома критеріями
Припустимо, у вас є список замовлень і ви хочете знайти кількість на основі 2 критеріїв, Ім'я клієнта і Продукт Ускладнює ситуацію те, що кожен замовник замовив кілька товарів, як показано в таблиці нижче:
Звичайна формула VLOOKUP не буде працювати в цій ситуації, оскільки вона повертає перший знайдений збіг, заснований на єдиному значенні пошуку, яке ви вказуєте.
Для подолання цього можна додати допоміжний стовпець і об'єднати значення з двох стовпців пошуку ( Замовник і Продукт Важливо, щоб у допоміжному стовпчику була саме та колонка, яка крайній лівий в масиві таблиці, оскільки саме в ньому Excel VLOOKUP завжди шукає шукане значення.
Отже, додайте стовпець зліва від таблиці та скопіюйте наведену нижче формулу в цей стовпець. Це заповнить допоміжний стовпець значеннями зі стовпців B і C (для кращої читабельності символ пробілу об'єднано між ними):
=B2&" "&C2
А потім, використовуючи стандартну формулу VLOOKUP, помістіть обидва критерії в lookup_value аргумент, відокремлений пропуском:
=VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)
Або введіть критерії в окремі комірки (G1 та G2 в нашому випадку) та об'єднайте ці комірки:
=VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)
Оскільки ми хочемо повернути значення зі стовпця D, який є четвертим в масиві таблиці, то використовуємо 4 для col_index_num "У нас тут є range_lookup встановлюється в значення FALSE для пошуку точного збігу. На скріншоті нижче показано результат:
Якщо ваша таблиця пошуку знаходиться в ще один аркуш включіть у формулу VLOOKUP ім'я аркуша, наприклад:
=VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)
Або створіть іменований діапазон для таблиці пошуку (скажімо, Замовлення ), щоб зробити формулу більш читабельною:
=VLOOKUP(G1&" "&G2, Orders, 4, FALSE)
Для отримання додаткової інформації див. розділ Як створити таблицю з іншого аркуша в Excel.
Примітка. Для коректної роботи формули значення в допоміжному стовпчику повинні бути об'єднані точно так само, як і в стовпчику lookup_value Наприклад, ми використовували символ пробілу для розділення критеріїв як у допоміжному стовпчику (B2&" "&C2), так і у формулі VLOOKUP (G1&" "&G2).
Формула 2. СХЕМА Excel з кількома умовами
Теоретично можна використовувати описаний вище підхід до Vlookup більше двох критеріїв. Однак є кілька застережень. По-перше, шукане значення обмежене 255 символами, а по-друге, дизайн робочого аркуша може не дозволяти додавати допоміжний стовпець.
На щастя, Microsoft Excel часто надає більше одного способу зробити одне і те ж. Для пошуку за кількома критеріями ви можете використовувати або комбінацію ІНДЕКСНИЙ СПІВПАДАННЯ, або функцію XLOOKUP, нещодавно введену в Office 365.
Наприклад, для пошуку на основі 3 різних значень ( Дата , Ім'я клієнта і Продукт ), використовуйте одну з наступних формул:
=INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))
=XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)
Де:
- G1 - критерій 1 (дата)
- G2 - критерій 2 (назва замовника)
- G3 - критерій 3 (продукт)
- A2:A11 - діапазон пошуку 1 (дати)
- B2:B11 - діапазон пошуку 2 (найменування клієнтів)
- C2:C11 - діапазон пошуку 3 (товари)
- D2:D11 - діапазон повернення (кількість)
Примітка: у всіх версіях, крім Excel 365, ІНДЕКС СХОДЖЕННЯ слід вводити як формулу масиву CSE, натиснувши Ctrl + Shift + Enter. В Excel 365, що підтримує динамічні масиви, вона також працює як звичайна формула.
Детальне роз'яснення формул наведено у додатку:
- XLOOKUP за кількома критеріями
- Формула INDEX MATCH з декількома критеріями
Як використовувати VLOOKUP для отримання 2-го, 3-го або n-го матчу
Як ви вже знаєте, Excel VLOOKUP може отримати тільки одне відповідне значення, точніше, він повертає перший знайдений збіг. Але що робити, якщо у вашому масиві пошуку є кілька збігів, і ви хочете отримати 2-й або 3-й екземпляр? Завдання звучить досить складно, але рішення існує!
Формула 1. Vlookup N-й екземпляр
Припустимо, у вас є імена клієнтів в одній колонці, продукти, які вони придбали, в іншій, і ви хочете знайти 2-й або 3-й продукт, придбаний даним клієнтом.
Найпростіший спосіб - додати допоміжний стовпець зліва від таблиці, як ми робили в першому прикладі. Але цього разу ми заповнимо його іменами клієнтів та номерами входжень типу " Джон Доу1 ", " Джон Доу2 " тощо.
Для отримання входження використовується функція СЧЕТЕСЛИ зі змішаним посиланням на діапазон (перше посилання абсолютне, а друге відносне типу $B$2:B2). Оскільки відносне посилання змінюється залежно від позиції комірки, куди копіюється формула, то в рядку 3 воно стане $B$2:B3, в рядку 4 - $B$2:B4 і т.д.
У поєднанні з назвою клієнта (B2) формула набуває такого вигляду:
=B2&COUNTIF($B$2:B2, B2)
Вищевказана формула потрапляє в комірку А2, а потім ви копіюєте її вниз у стільки комірок, скільки потрібно.
Після цього введіть в окремі комірки (F1 і F2) ім'я цілі та номер прояву, і використовуйте наведену нижче формулу для пошуку конкретного прояву:
=VLOOKUP(F1&F2, A2:C11, 3, FALSE)
Формула 2. 2-е входження Vlookup
Якщо ви шукаєте 2-й екземпляр шуканого значення, то можна обійтися без допоміжного стовпця. Замість цього створіть масив таблиці динамічно, використовуючи функцію INDIRECT разом з функцією MATCH:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)
Де:
- E1 - шукане значення
- A2:A11 - діапазон пошуку
- B11 - остання (права нижня) комірка таблиці пошуку
Зверніть увагу, що наведена вище формула написана для конкретного випадку, коли комірки з даними в таблиці пошуку починаються з рядка 2. Якщо ваша таблиця знаходиться десь посередині аркуша, використовуйте цю універсальну формулу, де А1 - верхня ліва комірка таблиці пошуку, що містить заголовок стовпця:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)
Як працює ця формула
Ось ключова частина формули, яка створює динамічний діапазон перегляду :
INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")
Функція МАТЧ, налаштована на точний збіг (0 в останньому аргументі), порівнює цільове ім'я (E1) зі списком імен (A2:A11) і повертає позицію першого знайденого збігу, яка в нашому випадку дорівнює 3. Це число буде використовуватися як координата початкового рядка для діапазону перегляду, тому ми додаємо до нього 2 (+1, щоб виключити перший екземпляр, і +1, щоб виключити рядок 1 з заголовками стовпців).Крім того, ви можете використовувати функцію 1+ROW(A1) для автоматичного розрахунку необхідного коригування на основі положення рядка заголовка (A1 в нашому випадку).
В результаті отримуємо наступний текстовий рядок, який INDIRECT перетворює в посилання на діапазон:
INDIRECT("A"&5&":B11") -> A5:B11
Цей діапазон охоплює table_array аргумент VLOOKUP, змушуючи його почати пошук з рядка 5, пропускаючи перший екземпляр шуканого значення:
VLOOKUP(E1, A5:B11, 2, FALSE)
Як вивести та повернути декілька значень в Excel
Функція VLOOKUP в Excel призначена для повернення тільки одного збігу. Чи існує спосіб VLOOKUP декількох екземплярів? Так, існує, хоча і не простий. Для цього потрібно комбіноване використання декількох функцій, таких як INDEX, SMALL і ROW - формула масиву.
Наприклад, нижче можна знайти всі входження шуканого значення F2 в діапазоні пошуку B2:B16 і повернути кілька збігів з стовпця C:
{=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}
Існує 2 способи введення формули на робочому аркуші:
- Введіть формулу в першу комірку, натисніть клавіші Ctrl + Shift + Enter, а потім перетягніть її вниз ще на кілька комірок.
- Виділіть декілька суміжних комірок в одному стовпчику (F1:F11 на скріншоті нижче), введіть формулу і натисніть Ctrl + Shift + Enter для її завершення.
У будь-якому випадку, кількість клітинок, в які ви вводите формулу, повинна дорівнювати або бути більшою за максимальну кількість можливих збігів.
Детальне пояснення логіки формули та більше прикладів див. у статті "Як виконати СРЗНАЧЕННЯ декількох значень в Excel".
Як виконати пошук по рядках і стовпцях (двосторонній пошук)
Двосторонній пошук (він же пошук матриць або 2-вимірний пошук ) - це вигадливе слово, що означає пошук значення на перетині певного рядка і стовпця. Існує кілька різних способів виконання двовимірного пошуку в Excel, але оскільки основна увага в цьому уроці приділяється функції VLOOKUP, ми, природно, будемо користуватися саме нею.
Для цього прикладу ми візьмемо наведену нижче таблицю з щомісячними продажами і розробимо формулу VLOOKUP, щоб отримати цифру продажів для конкретного товару в даному місяці.
З назвами позицій в A2:A9, назвами місяців в B1:F1, цільовою позицією в I1 та цільовим місяцем в I2, формула виглядає наступним чином:
=VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)
Як працює ця формула
В основі формули лежить стандартна функція ПОИСК, яка шукає точну відповідність шуканому значенню в I1. Але оскільки ми не знаємо, в якому саме стовпчику знаходяться продажі за конкретний місяць, ми не можемо передати номер стовпчика безпосередньо в функцію ПОИСК. col_index_num Для знаходження цього стовпця використовується наступна функція МАТЧ:
MATCH(I2, A1:F1, 0)
У перекладі на англійську мову формула говорить: знайти значення I2 в A1:F1 і повернути його відносне положення в масиві. Поставивши 0 в 3-й аргумент, ви даєте вказівку MATCH знайти значення, яке точно дорівнює шуканому (це все одно, що використовувати FALSE для функції range_lookup аргумент VLOOKUP).
Оскільки Березень знаходиться в 4-му стовпчику масиву пошуку, функція MATCH повертає 4, яка переходить безпосередньо до col_index_num аргумент VLOOKUP:
VLOOKUP(I1, A2:F9, 4, FALSE)
Зверніть увагу, що хоча назви місяців починаються зі стовпця B, для масиву пошуку ми використовуємо A1:I1. Це зроблено для того, щоб номер, який повертається функцією MATCH, відповідав позиції стовпця в table_array VLOOKUP.
Щоб дізнатися більше способів виконання матричного пошуку в Excel, дивіться статтю ПОИСК ПО ИНДЕКСУ та інші формули для двовимірного пошуку.
Як зробити кілька Vlookup в Excel (вкладені Vlookup)
Іноді може статися так, що основна таблиця і таблиця пошуку не мають жодного спільного стовпця, що не дозволяє виконати Vlookup між двома таблицями. Однак існує інша таблиця, яка не містить інформації, яку ви шукаєте, але має один спільний стовпець з основною таблицею і ще один спільний стовпець з таблицею пошуку.
Нижче наведено малюнок, який ілюструє ситуацію:
Мета - скопіювати ціни в основну таблицю на основі Ідентифікатори позицій Проблема полягає в тому, що таблиця з цінами не має Ідентифікатори позицій що означає, що нам доведеться робити два Vlookup в одній формулі.
Для зручності спочатку створимо пару іменованих полігонів:
- Пошукова таблиця 1 має ім'я Продукція (D3:E10)
- Пошукова таблиця 2 має назву Ціни ( G3:H10 )
Таблиці можуть бути на одному або різних аркушах.
А зараз ми виконаємо так званий подвійний Vlookup також відомий як вкладений Vlookup .
Спочатку складаємо формулу VLOOKUP, щоб знайти назву товару в таблиці пошуку 1 (з іменем Продукція ) на підставі ідентифікатора товару (А3):
=VLOOKUP(A3, Products, 2, FALSE)
Далі помістіть наведену вище формулу в lookup_value аргумент іншої функції VLOOKUP для отримання цін з таблиці пошуку 2 (з іменем Ціни ) на основі назви товару, що повертається вкладеним VLOOKUP:
=VLOOKUP(VLOOKUP(A3, Товари, 2, FALSE), Ціни, 2, FALSE)
Скріншот нижче показує нашу вкладену формулу Vlookup в дії:
Як динамічно переглядати кілька аркушів
Іноді дані в одному форматі можуть бути розподілені на декількох робочих аркушах. І ваша мета полягає в тому, щоб витягти дані з певного аркуша в залежності від значення ключа в певній комірці.
Це простіше зрозуміти на прикладі: скажімо, у вас є кілька регіональних звітів про продажі в однаковому форматі, і ви хочете отримати дані про продажі конкретного продукту в певних регіонах:
Як і в попередньому прикладі, ми починаємо з визначення кількох імен:
- Діапазон A2:B5 в аркуші CA має назву CA_Sales .
- Діапазон A2:B5 в аркуші FL має назву FL_Sales .
- Діапазон A2:B5 в аркуші KS має назву KS_Sales .
Як бачимо, всі названі діапазони мають спільну частину ( Продажі ) та унікальні деталі ( ЦА , FL , KS Будь ласка, не забудьте назвати свої діапазони аналогічним чином, оскільки це важливо для формули, яку ми будемо будувати.
Формула 1. НЕПРЯМИЙ ПОГЛЯД для динамічного витягування даних з різних аркушів
Якщо перед вами стоїть завдання отримати дані з декількох аркушів, найкращим рішенням буде формула VLOOKUP INDIRECT - компактна і зрозуміла.
Для цього прикладу ми організуємо зведену таблицю таким чином:
- Введіть добутки, які нас цікавлять, у клітинки A2 та A3. Це наші шукані значення.
- Ввести унікальні частини названих діапазонів у B1, C1 та D1.
А тепер об'єднуємо комірку, що містить унікальну частину (В1) із загальною частиною ("_Продажі"), і подаємо отриманий рядок в INDIRECT:
INDIRECT(B$1&"_Продажі")
Функція INDIRECT перетворює рядок в ім'я, зрозуміле Excel, і ви поміщаєте його в поле table_array аргумент VLOOKUP:
=VLOOKUP($A2, INDIRECT(B$1&"_Продажі"), 2, FALSE)
Наведена вище формула переходить у В2, а потім ви копіюєте її вниз і вправо.
Зверніть увагу, що в значенні для пошуку ($A2) ми зафіксували координату стовпця за абсолютним посиланням на комірку, щоб стовпець залишався нерухомим при копіюванні формули вправо. У посиланні B$1 ми зафіксували рядок, тому що ми хочемо, щоб координата стовпця змінювалася і передавала відповідну частину імені в INDIRECT в залежності від стовпця, в який копіюється формула:
Якщо Ваша основна таблиця організована інакше, значення пошуку в рядку, а унікальні частини імен діапазонів в стовпці, то слід зафіксувати координату рядка в значенні пошуку (B$1), а координату стовпця в частинах імен ($A2):
=VLOOKUP(B$1, INDIRECT($A2&"_Продажі"), 2, FALSE)
Формула 2. VLOOKUP і вкладені IF для пошуку на декількох аркушах
У ситуації, коли у вас всього два-три аркуші пошуку, ви можете використовувати досить просту формулу VLOOKUP з вкладеними функціями IF для вибору потрібного аркуша на основі значення ключа в конкретній комірці:
=VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,"")), 2, FALSE)
Де $A2 - шукане значення (назва елемента), а B$1 - ключове значення (стан):
У цьому випадку не обов'язково визначати імена і можна використовувати зовнішні посилання для посилання на інший аркуш або книгу.
Для отримання додаткових прикладів формул, будь ласка, дивіться Як переносити формули на кілька аркушів в Excel.
Ось як використовувати VLOOKUP в Excel. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!
Практичний посібник для завантаження
Приклади розширених формул VLOOKUP (файл .xlsx)