INDEX MATCH MATCH в Excel за двуизмерно търсене

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

В урока са показани няколко различни формули за извършване на двуизмерно търсене в Excel. Просто разгледайте алтернативите и изберете любимата си :)

Когато търсите нещо в електронните си таблици в Excel, в повечето случаи търсите по вертикала в колоните или по хоризонтала в редовете. Но понякога се налага да търсите и в редовете, и в колоните. С други думи, стремите се да намерите стойност в пресечната точка на определен ред и колона. Това се нарича търсене на матрица (известен още като 2-измерен или Двупосочно търсене ), а този урок показва как да го направите по 4 различни начина.

    Формула на Excel INDEX MATCH MATCH

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

    INDEX ( data_array , MATCH ( vlookup_value , lookup_column_range , 0), MATCH ( стойност на hlookup , lookup_row_range , 0))

    Като пример, нека направим формула за извличане на популацията на определено животно през дадена година от таблицата по-долу. Като начало определяме всички аргументи:

    • Data_array - B2:E4 (клетки с данни, без заглавията на редовете и колоните)
    • Vlookup_value - H1 (целево животно)
    • Lookup_column_range - A2:A4 (заглавия на редове: имена на животни) - A3:A4
    • Hlookup_value - H2 (целева година)
    • Lookup_row_range - B1:E1 (заглавия на колони: години)

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

    =INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))

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

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

    INDEX(B2:E4, row_num, column_num)

    Тук използваме способността на MATCH(lookup_value, lookup_array, [match_type]) да връща относителна позиция на lookup_value в lookup_array .

    Така че, за да получим номера на реда, търсим интересуващото ни животно (H1) в заглавията на редовете (A2:A4):

    MATCH(H1, A2:A4, 0)

    За да получим номера на колоната, търсим целевата година (H2) в заглавията на колоните (B1:E1):

    MATCH(H2, B1:E1, 0)

    И в двата случая търсим точно съвпадение, като задаваме на третия аргумент стойност 0.

    В този пример първият MATCH връща 2, защото стойността на vlookup (Полярна мечка) е намерена в A3, която е втората клетка в A2:A4. Вторият MATCH връща 3, защото стойността на hlookup (2000) е намерена в D1, която е третата клетка в B1:E1.

    Като се има предвид горното, формулата се свежда до:

    INDEX(B2:E4, 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)

    Къде:

    • Таблица_масив - A2:E4 (клетки за данни, включително заглавия на редове)
    • Vlookup_value - H1 (целево животно)
    • Hlookup_value - H2 (целева година)
    • Lookup_row_range - A1:E1 (заглавия на колони: години)

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

    Ядрото на формулата е функцията VLOOKUP, конфигурирана за точно съвпадение (последният аргумент е зададен на FALSE), която търси стойността за търсене (H1) в първата колона от масива на таблицата (A2:E4) и връща стойност от друга колона в същия ред. За да определите от коя колона да бъде върната стойност, използвате функцията MATCH, която също е конфигурирана за точно съвпадение (последният аргумент е зададен на 0):

    MATCH(H2, A1:E1, 0)

    MATCH търси стойността в H2 в заглавията на колоните (A1:E1) и връща относителната позиция на намерената клетка. В нашия случай целевата година (2010) е намерена в E1, която е пета в масива за търсене. Така числото 5 отива в col_index_num аргумент на VLOOKUP:

    VLOOKUP(H1, A2:E4, 5, FALSE)

    VLOOKUP я взема оттам, намира точно съвпадение за своята стойност за търсене в A2 и връща стойност от петата колона на същия ред, която е клетката 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 , data_array ))

    За нашия примерен набор от данни формулата е следната:

    =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.

    Формула SUMPRODUCT за двупосочно търсене

    Функцията SUMPRODUCT е като швейцарско ножче в Excel - тя може да прави много неща извън предназначението си, особено когато става въпрос за оценка на множество критерии.

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

    SUMPRODUCT( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), data_array )

    За да се извърши двупосочно търсене в нашия набор от данни, формулата е следната:

    =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}

    Функцията SUMPRODUCT умножава елементите на горния масив по елементите на 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.

    Забележка. Ако таблицата ви има повече от един ред и/или заглавия на колони с едно и също име, крайният масив ще съдържа повече от едно число, различно от нула, и всички тези числа ще бъдат сумирани. В резултат ще получите сума от стойности, които отговарят и на двата критерия. Именно това прави формулата SUMPRODUCT различна от INDEX MATCH MATCH и VLOOKUP, които връщат първото намерено съвпадение.

    Търсене на матрици с именувани диапазони (явно пресичане)

    Още един невероятно прост начин за извършване на матрично търсене в Excel е чрез използване на именувани диапазони. Ето как:

    Част 1: Именуване на колони и редове

    Най-бързият начин за именуване на всеки ред и всяка колона в таблицата е следният:

    1. Изберете цялата таблица (A1:E4 в нашия случай).
    2. На Формули в раздела Дефинирани имена група, щракнете върху Създаване от селекция или натиснете бързата клавишна комбинация Ctrl + Shift + F3.
    3. В Създаване на имена от селекция диалогов прозорец, изберете Горен ред и Лява колона, и щракнете върху OK.

    По този начин автоматично се създават имена въз основа на заглавията на редовете и колоните. Има обаче няколко предупреждения:

    • Ако заглавията на вашите колони и/или редове са числа или съдържат специфични символи, които не са разрешени в имената на Excel, имената за такива колони и редове няма да бъдат създадени. За да видите списък със създадените имена, отворете Мениджър на имената ( Ctrl + F3 ). Ако някои имена липсват, определете ги ръчно, както е обяснено в Как да дадете име на диапазон в Excel.
    • Ако някои от заглавията на редове или колони съдържат интервали, те ще бъдат заменени с подчертавания, например, Polar_bear .

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

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

    Част 2: Създаване на формула за търсене на матрица

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

    = row_name име на колона

    Или обратното:

    = име на колона row_name

    Например, за да се определи популацията на сините китове през 1990 г., формулата е следната:

    =Blue_whale _1990

    Ако някой се нуждае от по-подробни инструкции, следващите стъпки ще ви помогнат да преминете през процеса:

    1. В клетката, в която искате да се появи резултатът, въведете знака за равенство (=).
    2. Започнете да въвеждате името на целевия ред, например, Blue_whale . След като въведете няколко символа, Excel ще покаже всички съществуващи имена, които съответстват на въведените от вас данни. Щракнете два пъти върху желаното име, за да го въведете във формулата си:
    3. След името на реда въведете символа пространство , който работи като оператор за пресичане в този случай.
    4. Въведете името на целевата колона ( _1990 в нашия случай).
    5. След като въведете имената на редовете и колоните, Excel ще маркира съответния ред и колона в таблицата и ще натиснете Enter, за да завършите формулата:

    Прегледът на матрицата е завършен и резултатът е показан на снимката по-долу:

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

    Налични изтегляния

    Примерна работна книга за 2-измерно търсене

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