Напредни ВЛООКУП у Екцел-у: вишеструки, двоструки, угнежђени

  • Деле Ово
Michael Brown

Ови примери ће вас научити како да прегледате више критеријума, вратите одређену инстанцу или сва подударања, извршите динамичку претрагу на више листова и још много тога.

То је други део серија која ће вам помоћи да искористите моћ Екцел ВЛООКУП-а. Примери указују на то да знате како ова функција функционише. Ако није, логично је да почнете са основном употребом ВЛООКУП-а у Екцел-у.

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

ВЛООКУП(вредност_претраживања, табеле_низ, број_индекса, [опсег_претрага] )

Сада када су сви на истој страници, хајде да детаљније погледамо напредне примере ВЛООКУП формуле:

    Како прегледати више критеријума

    Екцел Функција ВЛООКУП је заиста корисна када је у питању тражење одређене вредности у бази података. Међутим, недостаје му важна карактеристика - његова синтакса дозвољава само једну вредност тражења. Али шта ако желите да погледате са неколико услова? Постоји неколико различитих решења између којих можете да изаберете.

    Формула 1. ВЛООКУП са два критеријума

    Претпоставимо да имате листу поруџбина и желите да пронађете количину на основу 2 критеријума, Име купца и Производ . Компликујући фактор је то што је сваки купац наручио више производа, као што је приказано у табели испод:

    Уобичајена ВЛООКУП формула неће радити у овој ситуацији јер враћа прву пронађену меч на основу арегиони:

    Као у претходном примеру, почињемо са дефинисањем неколико имена:

    • Опсег А2:Б5 у ЦА листу је назван ЦА_Салес .
    • Опсег А2:Б5 у ФЛ листу је назван ФЛ_Салес .
    • Опсег А2:Б5 у КС листу је назван КС_Салес .

    Као што видите, сви именовани опсези имају заједнички део ( Продаја ) и јединствене делове ( ЦА , ФЛ , КС ). Обавезно назовите своје опсеге на сличан начин јер је то неопходно за формулу коју ћемо направити.

    Формула 1. ИНДИРЕКТНА ВЛООКУП за динамичко повлачење података из различитих листова

    Ако је ваш задатак је за преузимање података са више листова, ВЛООКУП ИНДИРЕЦТ формула је најбоље решење – компактна и лака за разумевање.

    За овај пример, организујемо табелу сажетка на следећи начин:

    • Унесите производе од интереса у А2 и А3. То су наше вредности за тражење.
    • Унесите јединствене делове именованих опсега у Б1, Ц1 и Д1.

    И сада, спајамо ћелију која садржи јединствени део (Б1) са заједничким делом ("_Салес") и убаците резултујући стринг на ИНДИРЕЦТ:

    INDIRECT(B$1&"_Sales")

    ИНДИРЕЦТ функција трансформише стринг у име које Екцел може да разуме, а ви га ставите у аргумент табле_арраи ВЛООКУП:

    =VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)

    Горења формула иде у Б2, а затим је копирате надоле и надесно.

    Молим вас обратите пажњу да у траженој вредности ($А2),закључали смо координате колоне са апсолутном референцом ћелије тако да колона остаје фиксна када се формула копира удесно. У референци Б$1, закључали смо ред јер желимо да се координата колоне промени и обезбеди одговарајући део имена у ИНДИРЕЦТ у зависности од колоне у коју је формула копирана:

    Ако је ваша главна табела другачије организована, вредности за тражење у реду и јединствени делови имена опсега у колони, тада би требало да закључате координате реда у вредности за тражење (Б$1) и координате колоне у деловима имена ($А2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)

    Формула 2. ВЛООКУП и угнежђени ИФ за тражење више листова

    У ситуацији када имате само два или три листа за тражење, можете користити прилично једноставну ВЛООКУП формулу са угнежђеним ИФ функцијама да изаберете исправан лист на основу вредности кључа у одређеној ћелији:

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,""))), 2, FALSE)

    Где је $А2 је вредност тражења (име ставке), а Б$1 је вредност кључа (стање):

    У овом случају, не морате нужно да дефинишете имена и можете да користите екстерне референце за упућивање на други лист или радну свеску.

    За више формуле нпр мплес, погледајте Како се врши ВЛООКУП на више листова у Екцел-у.

    Тако се користи ВЛООКУП у Екцел-у. Захваљујем вам што сте читали и надам се да се видимо на нашем блогу следеће недеље!

    Вежбање за преузимање

    Напредни примери формуле ВЛООКУП (.клскфајл)

    једна вредност за тражење коју наведете.

    Да бисте ово превазишли, можете додати помоћну колону и тамо спојити вредности из две колоне за тражење ( Купац и Производ ). Важно је да колона помоћника треба да буде крајња лева колона у низу табеле јер је то место где Екцел ВЛООКУП увек тражи вредност тражења.

    Дакле, додајте колону лево од вашег табелу и копирајте формулу испод преко те колоне. Ово ће попунити помоћну колону вредностима из колона Б и Ц (размак је спојен између ради боље читљивости):

    =B2&" "&C2

    А затим користите стандардну ВЛООКУП формулу и поставите оба критеријума у ​​аргументу лоокуп_валуе , одвојена размаком:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Или унесите критеријуме у засебне ћелије (Г1 и Г2 у нашем случају) и спојите их ћелије:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Пошто желимо да вратимо вредност из колоне Д, која је четврта у низу табеле, користимо 4 за цол_индек_нум . Аргумент ранге_лоокуп је постављен на ФАЛСЕ да би се тражило тачно подударање. Снимак екрана испод показује резултат:

    У случају да је ваша табела за тражење у другом листу , укључите име листа у формулу ВЛООКУП. На пример:

    =VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)

    Алтернативно, креирајте именовани опсег за табелу тражења (рецимо, Поруџбине ) да бисте формулу учинили лакшом за читање:

    =VLOOKUP(G1&" "&G2, Orders, 4, FALSE)

    За више информација погледајте КакоПрегледајте са другог листа у Екцел-у.

    Напомена. Да би формула исправно функционисала, вредности у колони помоћника треба да буду спојене на потпуно исти начин као у аргументу лоокуп_валуе . На пример, користили смо размак да бисмо одвојили критеријуме у помоћној колони (Б2&амп;" "&амп;Ц2) и формули ВЛООКУП (Г1&амп;" "&амп;Г2).

    Формула 2. Екцел ВЛООКУП са више услова

    У теорији, можете користити горњи приступ за Влоокуп више од два критеријума. Међутим, постоји неколико упозорења. Прво, вредност тражења је ограничена на 255 знакова, а друго, дизајн радног листа можда не дозвољава додавање помоћне колоне.

    Срећом, Мицрософт Екцел често пружа више од једног начина да се уради иста ствар. Да бисте прегледали више критеријума, можете користити комбинацију ИНДЕКС МАТЦХ или функцију КСЛООКУП недавно уведену у Оффице 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)

    Где:

    • Г1 је критеријум 1 (датум)
    • Г2 је критеријум 2 (име купца)
    • Г3 је критеријум 3 (производ)
    • А2:А11 је тражење опсег 1 (датуми)
    • Б2:Б11 је опсег претраживања 2 (имена купаца)
    • Ц2:Ц11 је опсег претраживања 3 (производи)
    • Д2:Д11 је повратак опсег (количина)

    Напомена. У свим верзијама осим Екцел 365, ИНДЕКСМАТЦХ треба да се унесе као формула ЦСЕ низа притиском на Цтрл + Схифт + Ентер. У програму Екцел 365 који подржава динамичке низове такође функционише као обична формула.

    Детаљно објашњење формула погледајте:

    • КСЛООКУП са више критеријума
    • Формула ИНДЕКС ПОДАРЂИВАЊА са више критеријума

    Како да користите ВЛООКУП да бисте добили 2., 3. или н-то подударање

    Као што већ знате, Екцел ВЛООКУП може дохватити само једну подударну вредност, тачније, враћа прво пронађено подударање. Али шта ако постоји неколико подударања у вашем низу тражења и желите да добијете 2. или 3. инстанцу? Задатак звучи прилично замршено, али решење постоји!

    Формула 1. Влоокуп Нтх инстанце

    Претпоставимо да имате имена купаца у једној колони, производе које су купили у другој, а ви тражите да бисте пронашли 2. или 3. производ који је купио дати купац.

    Најједноставнији начин је да додате помоћну колону лево од табеле као што смо урадили у првом примеру. Али овог пута ћемо га попунити именима купаца и бројевима појављивања као што су „ Јохн Дое1 “, „ Јохн Дое2 “, итд.

    Да бисте добили појаву, користите функцију ЦОУНТИФ са референцом мешовитог опсега (прва референца је апсолутна, а друга релативна као $Б$2:Б2). Пошто се релативна референца мења на основу позиције ћелије у коју је формула копирана, у реду 3 ће постати $Б$2:Б3, у реду 4 -$Б$2:Б4 и тако даље.

    Увезана са именом купца (Б2), формула има овај облик:

    =B2&COUNTIF($B$2:B2, B2)

    Горења формула иде у А2 , а затим га копирате у онолико ћелија колико је потребно.

    Након тога, унесите име циља и број појављивања у одвојене ћелије (Ф1 и Ф2) и користите формулу испод да бисте потражили одређену појаву:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Формула 2. Влоокуп 2. појава

    Ако тражите 2. инстанцу тражене вредности, онда можете учинити без помоћне колоне. Уместо тога, динамички креирајте низ табеле користећи функцију ИНДИРЕЦТ заједно са МАТЦХ:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)

    Где је:

    • Е1 је вредност тражења
    • А2:А11 је опсег претраживања
    • Б11 је последња (доња десна) ћелија табеле за тражење

    Имајте на уму да горња формула је написана за посебан случај када ћелије података у табели за тражење почињу у реду 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 у последњем аргументу) упоређује име циља (Е1) са листом имена (А2:А11) и враћа позицију првог пронађеног меч, што је 3у нашем случају. Овај број ће се користити као почетна координата реда за опсег влоокуп-а, па му додајемо 2 (+1 да искључимо прву инстанцу и +1 да искључимо ред 1 са заглављима колона). Алтернативно, можете користити 1+РОВ(А1) да аутоматски израчунате неопходно прилагођавање на основу позиције реда заглавља (А1 у нашем случају).

    Као резултат, добијамо следећи текстуални низ, који ИНДИРЕЦТ се конвертује у референцу опсега:

    INDIRECT("A"&5&":B11") -> A5:B11

    Овај опсег иде у аргумент табле_арраи ВЛООКУП-а присиљавајући га да почне да тражи у реду 5, изостављајући прву инстанцу вредност тражења:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Како прегледати и вратити више вредности у Екцел-у

    Екцел функција ВЛООКУП је дизајнирана да врати само једно подударање. Постоји ли начин за Влоокуп више инстанци? Да, постоји, иако није лака. Ово захтева комбиновану употребу неколико функција као што су ИНДЕКС, СМАЛЛ и РОВ је формула низа.

    На пример, у наставку можете пронаћи сва појављивања вредности претраживања Ф2 у опсегу претраживања Б2:Б16 и вратити вишеструко подудара се из колоне Ц:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Постоје 2 начина да унесете формулу у радни лист:

    1. Унесите формулу у прву ћелију, притисните Цтрл + Схифт + Ентер , а затим га превуците надоле до још неколико ћелија.
    2. Изаберите неколико суседних ћелија у једној колони (Ф1:Ф11 на слици испод), откуцајте формулу и притисните Цтрл +Схифт + Ентер да бисте је довршили.

    У сваком случају, број ћелија у које уносите формулу треба да буде једнак или већи од максималног броја могућих подударања.

    За детаљно објашњење логике формуле и више примера, погледајте Како ВЛООКУП више вредности у Екцел-у.

    Како прегледати у редовима и колонама (двосмерно тражење)

    Двосмерно тражење (познато и као тражење матрице или 2-димензионално тражење ) је фенси реч за тражење вредности на пресеку одређени ред и колона. Постоји неколико различитих начина да се изврши дводимензионално тражење у Екцел-у, али пошто је фокус овог упутства на функцији ВЛООКУП, ми ћемо је природно користити.

    За овај пример, узећемо следеће табелу са месечном продајом и изради ВЛООКУП формулу за преузимање података о продаји за одређену ставку у датом месецу.

    Са називима ставки у А2:А9, називима месеци у Б1:Ф1, циљном ставком у И1 и циљни месец у И2, формула иде на следећи начин:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Како ова формула функционише

    Језгро формуле је стандардна функција ВЛООКУП која тражи тачно подударање са вредношћу претраживања у И1. Али пошто не знамо у којој се тачно колони налази продаја за одређени месец, не можемо да унесемо број колоне директно у аргумент цол_индек_нум . Да бисмо пронашли ту колону, користимо следеће МАТЦХфунцтион:

    MATCH(I2, A1:F1, 0)

    Преведено на енглески, формула каже: потражите вредност И2 у А1:Ф1 и вратите њен релативни положај у низу. Достављањем 0 трећем аргументу, дајете инструкције МАТЦХ да пронађе вредност која је тачно једнака вредности тражења (то је као да користите ФАЛСЕ за аргумент ранге_лоокуп аргумента ВЛООКУП).

    Пошто Мар је у 4. колони у низу претраживања, функција МАТЦХ враћа 4, што иде директно у аргумент цол_индек_нум аргумента ВЛООКУП:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Молим обратите пажњу да иако називи месеци почињу у колони Б, ми користимо А1:И1 за низ за тражење. Ово се ради како би број који враћа МАТЦХ одговарао позицији колоне у табле_арраи ВЛООКУП-а.

    Да бисте сазнали више начина за обављање тражења матрице у Екцел-у, погледајте ИНДЕКС МАТЦХ МАТЦХ и друге формуле за 2-димензионално тражење.

    Како да урадите вишеструки Влоокуп у Екцел-у (угнежђени Влоокуп)

    Понекад се може десити да ваша главна табела и табела за претрагу немају једну колону у цоммон, што вас спречава да извршите Влоокуп између две табеле. Међутим, постоји још једна табела, која не садржи информације које тражите, али има једну заједничку колону са главном табелом и другу заједничку колону са табелом за тражење.

    На слици испод илуструје ситуацију:

    Циљ је копирање цена у главну табелу на основу ИД-ови ставки . Проблем је у томе што табела која садржи цене нема ИД-ове ставки , што значи да ћемо морати да урадимо два Влоокупа у једној формули.

    Ради погодности, хајде да направимо неколико прво именовани опсези:

    • Табела за тражење 1 се зове Производи (Д3:Е10)
    • Табела за тражење 2 се зове Цене ( Г3:Х10 )

    Табеле могу бити у истим или различитим радним листовима.

    А сада ћемо извршити такозвани двоструки Влоокуп , ака угнежђени Влоокуп .

    Прво, направите формулу ВЛООКУП да бисте пронашли назив производа у табели за претрагу 1 (назван Производи ) на основу ставке ид (А3):

    =VLOOKUP(A3, Products, 2, FALSE)

    Следеће, ставите горњу формулу у аргумент лоокуп_валуе друге функције ВЛООКУП да бисте извукли цене из табеле за тражење 2 (назване Цене ) на основу назива производа који је вратио угнежђени ВЛООКУП:

    =VLOOKUP(VLOOKUP(A3, Products, 2, FALSE), Prices, 2, FALSE)

    Снимак екрана испод приказује нашу угнежђену формулу Влоокуп у акцији:

    Како динамички прегледати више листова

    Понекад, и можете имати податке у истом формату подељене на неколико радних листова. Ваш циљ је да извучете податке из одређеног листа у зависности од вредности кључа у датој ћелији.

    Ово је можда лакше разумети из примера. Рецимо, имате неколико регионалних извештаја о продаји у истом формату и тражите податке о продаји за одређени производ у одређеним

    Мајкл Браун је посвећен технолошки ентузијаста са страшћу за поједностављење сложених процеса помоћу софтверских алата. Са више од деценије искуства у технолошкој индустрији, усавршио је своје вештине у Мицрософт Екцел-у и Оутлоок-у, као и у Гоогле табеле и документима. Мајклов блог посвећен је дељењу свог знања и стручности са другима, пружајући једноставне савете и упутства за побољшање продуктивности и ефикасности. Без обзира да ли сте искусан професионалац или почетник, Мајклов блог нуди вредне увиде и практичне савете како да на најбољи начин искористите ове основне софтверске алате.