Excel INDEX MATCH срещу VLOOKUP - примери за формули

  • Споделя Това
Michael Brown

Този урок показва как да използвате INDEX и MATCH в Excel и с какво те са по-добри от VLOOKUP.

В няколко скорошни статии се постарахме да обясним основите на функцията VLOOKUP на начинаещите и да предоставим по-сложни примери за формулата VLOOKUP на опитните потребители. А сега ще се опитам, ако не да ви откажа от използването на VLOOKUP, то поне да ви покажа алтернативен начин за извършване на вертикално търсене в Excel.

"За какво ми е това?" - може би се чудите. Защото VLOOKUP има многобройни ограничения, които могат да ви попречат да получите желания резултат в много ситуации. От друга страна, комбинацията INDEX MATCH е по-гъвкава и има много страхотни функции, които я правят по-добра от VLOOKUP в много отношения.

    Функциите INDEX и MATCH в Excel - основи

    Тъй като целта на този урок е да демонстрира алтернативен начин за извършване на VLOOKUP в Excel чрез използване на комбинация от функциите INDEX и MATCH, няма да се спираме подробно на техния синтаксис и приложения. Ще разгледаме само минимума, необходим за разбиране на общата идея, а след това ще разгледаме подробно примери с формули, които разкриват всички предимства на използването на INDEX MATCH вместо VLOOKUP.

    Функция INDEX - синтаксис и употреба

    Функцията INDEX на Excel връща стойност в масив въз основа на номерата на редовете и колоните, които сте посочили. Синтаксисът на функцията INDEX е прост:

    INDEX(array, row_num, [column_num])

    Ето едно много просто обяснение на всеки параметър:

    • масив - диапазон от клетки, от който искате да върнете стойност.
    • row_num - номерът на реда в масива, от който искате да върнете стойност. Ако е пропуснат, се изисква номерът на колоната.
    • номер на колона - номерът на колоната в масива, от която искате да върнете стойност. Ако е пропуснат, се изисква ред_num.

    За повече информация вижте функцията Excel INDEX.

    А ето и пример за формулата INDEX в нейната най-проста форма:

    =INDEX(A1:C10,2,3)

    Формулата търси в клетките от A1 до C10 и връща стойността на клетката от втория ред и третата колона, т.е. клетката C2.

    Много лесно, нали? Когато обаче работите с реални данни, едва ли някога ще знаете кой ред и коя колона искате, ето тук функцията MATCH е полезна.

    Функция MATCH - синтаксис и употреба

    Функцията MATCH на Excel търси стойност за търсене в диапазон от клетки и връща относителна позиция на тази стойност в диапазона.

    Синтаксисът на функцията MATCH е следният:

    MATCH(lookup_value, lookup_array, [match_type])
    • lookup_value - числото или текстовата стойност, която търсите.
    • lookup_array - диапазон от клетки, в които се търси.
    • match_type - указва дали да се върне точно съвпадение или най-близкото съвпадение:
      • 1 или пропуснато - намира най-голямата стойност, която е по-малка или равна на стойността за търсене. Изисква сортиране на масива за търсене във възходящ ред.
      • 0 - намира първата стойност, която е точно равна на стойността за търсене. В комбинацията INDEX / MATCH почти винаги се нуждаете от точно съвпадение, затова задавате третия аргумент на функцията MATCH на 0.
      • -1 - намира най-малката стойност, която е по-голяма или равна на lookup_value. Изисква сортиране на масива за търсене в низходящ ред.

    Например, ако диапазонът B1:B3 съдържа стойностите "New-York", "Paris", "London", формулата по-долу връща числото 3, тъй като "London" е третият запис в диапазона:

    =MATCH("Лондон",B1:B3,0)

    За повече информация вижте функцията Excel MATCH.

    На пръв поглед полезността на функцията MATCH може да изглежда съмнителна. Кой се интересува от позицията на дадена стойност в обхвата? Това, което искаме да знаем, е самата стойност.

    Нека ви напомня, че относителната позиция на стойността за търсене (т.е. номера на реда и колоната) е точно това, което трябва да предоставите на row_num и номер на колона Както си спомняте, Excel INDEX може да намери стойността в точката на пресичане на даден ред и колона, но не може да определи кои точно ред и колона искате.

    Как да използвате функцията INDEX MATCH в Excel

    Сега, след като знаете основите, вярвам, че вече е станало ясно как MATCH и INDEX работят заедно. Накратко, INDEX намира стойността за търсене чрез номера на колоната и реда, а MATCH предоставя тези номера. Това е всичко!

    За вертикално търсене използвате функцията MATCH само за определяне на номера на реда и предоставяте обхвата на колоната директно на INDEX:

    INDEX ( колона, за да върнете стойност от , MATCH ( стойност за търсене , колона, срещу която да погледнете нагоре , 0))

    Все още изпитвате затруднения да разберете това? Може би е по-лесно да го разберете от един пример. Да предположим, че имате списък със столиците на държавите и тяхното население:

    За да откриете населението на определена столица, например столицата на Япония, използвайте следната формула INDEX MATCH:

    =INDEX(C2:C10, MATCH("Япония", A2:A10, 0))

    Нека сега анализираме какво всъщност прави всеки компонент на тази формула:

    • Функцията MATCH търси стойността за търсене "Japan" в диапазона A2:A10 и връща числото 3, тъй като "Japan" е на трето място в масива за търсене.
    • Номерът на реда отива директно към row_num аргумент на INDEX, който му дава указание да върне стойност от този ред.

    Така горната формула се превръща в обикновен INDEX(C2:C,3), който казва да се търси в клетките от C2 до C10 и да се изтегли стойността от третата клетка в този диапазон, т.е. C4, тъй като започваме да броим от втория ред.

    Не искате да въвеждате града във формулата? Въведете го в някоя клетка, например F1, подайте референцията към клетката на MATCH и ще получите динамична формула за търсене:

    =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 Sheets вижте примери за формули с INDEX MATCH в тази статия.

    INDEX MATCH срещу VLOOKUP

    Когато се решава коя функция да се използва за вертикални търсения, повечето гурута на Excel са съгласни, че INDEX MATCH е много по-добра от VLOOKUP. Въпреки това много хора все още остават с VLOOKUP, първо, защото е по-проста, и второ, защото не разбират напълно всички предимства на използването на формулата INDEX MATCH в Excel. Без такова разбиране никой не е готов да инвестира времето си, за да научи по-сложнасинтаксис.

    По-долу ще посоча основните предимства на MATCH INDEX пред VLOOKUP, а вие ще решите дали е достойно допълнение към арсенала ви в Excel.

    4 основни причини да използвате INDEX MATCH вместо VLOOKUP

    1. Търсене отдясно наляво. Както всеки образован потребител знае, VLOOKUP не може да търси вляво, което означава, че стойността за търсене винаги трябва да се намира в най-лявата колона на таблицата. INDEX MATCH може да търси вляво с лекота! Следващият пример го показва в действие: Как VLOOKUP да търси стойност вляво в Excel.
    2. Вмъквайте или изтривайте колони безопасно. Формулите VLOOKUP се нарушават или дават неверни резултати, когато от таблицата за търсене се изтрие или добави нова колона, тъй като синтаксисът на VLOOKUP изисква да се посочи индексният номер на колоната, от която искате да изтеглите данните. Естествено, когато добавяте или изтривате колони, индексният номер се променя.

      При INDEX MATCH задавате обхвата на връщаните колони, а не номер на индекса. В резултат на това можете да вмъквате и премахвате колкото искате колони, без да се притеснявате за актуализирането на всяка свързана формула.

    3. Няма ограничение за размера на стойността за търсене. Когато използвате функцията VLOOKUP, общата дължина на критериите за търсене не може да надвишава 255 символа, в противен случай ще получите грешка #VALUE!. Така че, ако наборът ви от данни съдържа дълги низове, единственото работещо решение е INDEX MATCH.
    4. По-висока скорост на обработка. Ако таблиците ви са сравнително малки, едва ли ще има съществена разлика в производителността на Excel. Но ако работните ви листове съдържат стотици или хиляди редове и съответно стотици или хиляди формули, MATCH INDEX ще работи много по-бързо от VLOOKUP, тъй като Excel ще трябва да обработва само колоните за търсене и връщане, а не целия масив на таблицата.

      Влиянието на VLOOKUP върху производителността на Excel може да бъде особено забележимо, ако работната ви книга съдържа сложни формули за масиви като VLOOKUP и SUM. Работата е там, че проверката на всяка стойност в масива изисква отделно извикване на функцията VLOOKUP. Така че колкото повече стойности съдържа масивът ви и колкото повече формули за масиви има в работната книга, толкова по-бавно работи Excel.

    Excel INDEX MATCH - примери за формули

    След като вече знаете причините да научите функцията MATCH INDEX, нека преминем към най-интересната част и да видим как можете да приложите теоретичните знания на практика.

    Формула INDEX MATCH за преглеждане от дясно на ляво

    Както вече беше споменато, VLOOKUP не може да гледа в лявата си част. Така че, ако стойностите за търсене не са в най-лявата колона, няма шанс формулата Vlookup да ви донесе желания резултат. Функцията INDEX MATCH в Excel е по-универсална и не се интересува къде се намират колоните за търсене и връщане.

    За този пример ще добавим колоната Rank в лявата част на нашата примерна таблица и ще се опитаме да разберем как се класира руската столица Москва по брой на населението.

    Със стойността за търсене в G1 използвайте следната формула, за да търсите в C2:C10 и да върнете съответната стойност от A2:A10:

    =INDEX(A2:A10,MATCH(G1,C2:C10,0))

    Съвет. Ако планирате да използвате формулата INDEX MATCH за повече от една клетка, не забравяйте да заключите двата диапазона с абсолютни референции към клетките (например $A$2:$A$10 и $C$2:4C$10), за да не се изкривят при копиране на формулата.

    INDEX MATCH MATCH за търсене в редове и колони

    В горните примери използвахме INDEX MATCH като заместител на класическия VLOOKUP, за да върнем стойност от предварително зададен диапазон от една колона. Но какво става, ако трябва да търсите в няколко реда и колони? С други думи, какво става, ако искате да извършите т.нар. матрица или двупосочен търсене?

    Това може да звучи сложно, но формулата е много подобна на основната функция INDEX MATCH на Excel, само с една разлика. Познайте какво?

    Просто използвайте две функции MATCH - едната за получаване на номер на ред, а другата за получаване на номер на колона. И поздравявам тези от вас, които са познали правилно :)

    INDEX (масив, MATCH ( стойност на търсачката , колона, срещу която да погледнете нагоре , 0), MATCH ( стойност на hlookup , ред, срещу който да погледнете нагоре , 0))

    А сега, моля, погледнете таблицата по-долу и нека съставим формула INDEX MATCH MATCH, за да намерим населението (в милиони) в дадена държава за дадена година.

    При целева държава в 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)

    В резултат на това получавате стойност в пресечната точка на втория ред и третата колона в диапазона B2:D11, която е стойността в клетка D3. Лесно? Да!

    Excel INDEX MATCH за търсене на множество критерии

    Ако сте имали възможност да прочетете нашето ръководство за Excel VLOOKUP, вероятно вече сте изпробвали формула за Vlookup с няколко критерия. Значително ограничение на този подход обаче е необходимостта от добавяне на помощна колона. Добрата новина е, че функцията INDEX MATCH на Excel също може да търси с два или повече критерия, без да променя или преструктурира изходните ви данни!

    Ето общата формула INDEX MATCH с множество критерии:

    {=INDEX( return_range , 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:

    Как работят тези формули

    Формулите използват същия подход като основната функция INDEX MATCH, която преглежда една колона. За да оцените множество критерии, създавате два или повече масива от стойности TRUE и FALSE, които представляват съвпадения и несъвпадения за всеки отделен критерий, и след това умножавате съответните елементи на тези масиви. Операцията умножение превръща TRUE и FALSE в 1 и 0,Функцията MATCH със стойност на търсене 1 намира първата "1" в масива и предава позицията ѝ на INDEX, който връща стойност в този ред от посочената колона.

    Формулата, която не е за масиви, разчита на способността на функцията INDEX да обработва масиви по естествен начин. Вторият INDEX е конфигуриран с 0 row_num така че да предаде целия масив от колони на MATCH.

    Това е обяснение на високо ниво на логиката на формулата. За повече подробности вижте раздел Excel INDEX MATCH с множество критерии.

    INDEX MATCH на Excel със средна стойност, MAX, MIN

    Microsoft Excel разполага със специални функции за намиране на минимална, максимална и средна стойност в даден диапазон. Но какво става, ако трябва да получите стойност от друга клетка, която е свързана с тези стойности? В този случай използвайте функцията MAX, MIN или AVERAGE заедно с INDEX MATCH.

    INDEX MATCH с MAX

    За да намерите най-голямата стойност в колона D и да върнете стойност от колона C в същия ред, използвайте тази формула:

    =INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))

    INDEX MATCH с MIN

    За да намерите най-малката стойност в колона D и да изтеглите свързаната с нея стойност от колона C, използвайте този пример:

    =INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))

    INDEX MATCH с AVERAGE

    За да се определи стойността, която е най-близка до средната стойност в D2:D10, и да се получи съответната стойност от колона C, се използва следната формула:

    =INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))

    В зависимост от това как са организирани данните ви, въведете 1 или -1 в третия аргумент (match_type) на функцията MATCH:

    • Ако вашата колона за търсене (колона D в нашия случай) е сортирана възходящ , поставете 1. Формулата ще изчисли най-голямата стойност, която е по-малко от или равна на средната стойност.
    • Ако колоната ви за търсене е сортирана низходящ , въведете -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)), "Упс, нещо се обърка!")

    Имайте предвид, че в много ситуации може да е неразумно да прикривате всички грешки, тъй като те ви предупреждават за възможни грешки във вашата формула.

    Това е начинът за използване на INDEX и MATCH в Excel. Надявам се, че примерите с формулите ще ви бъдат полезни, и очаквам с нетърпение да се видим в нашия блог следващата седмица!

    Практическа работна тетрадка за изтегляне

    Примери за INDEX MATCH в Excel (.xlsx файл)

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.