Gevorderde VLOOKUP in Excel: veelvuldig, dubbel, geneste

  • Deel Dit
Michael Brown

Hierdie voorbeelde sal jou leer hoe om verskeie kriteria op te soek, 'n spesifieke instansie of alle passings terug te gee, dinamiese Vlookup in veelvuldige velle te doen, en meer.

Dit is die tweede deel van die reeks wat jou sal help om die krag van Excel VLOOKUP te benut. Die voorbeelde impliseer dat jy weet hoe hierdie funksie werk. Indien nie, is dit logies om met die basiese gebruike van VLOOKUP in Excel te begin.

Voordat ek verder beweeg, laat ek jou kortliks herinner aan die sintaksis:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup] )

Nou dat almal op dieselfde bladsy is, kom ons kyk na die gevorderde VLOOKUP-formulevoorbeelde van naderby:

    Hoe om verskeie kriteria op te soek

    Die Excel VLOOKUP-funksie is baie nuttig wanneer dit kom by soek na 'n databasis vir 'n sekere waarde. Dit het egter nie 'n belangrike kenmerk nie - die sintaksis maak voorsiening vir net een opsoekwaarde. Maar wat as jy met verskeie toestande wil opkyk? Daar is 'n paar verskillende oplossings waaruit jy kan kies.

    Formule 1. OPSOEK met twee kriteria

    Sê nou jy het 'n lys bestellings en wil die hoeveelheid op grond van 2 kriteria vind, Klantnaam en Produk . 'n Kompliserende faktor is dat elke kliënt verskeie produkte bestel het, soos in die tabel hieronder getoon:

    'n Gewone VLOOKUP-formule sal nie in hierdie situasie werk nie, want dit gee die eerste gevind wedstryd gebaseer op astreke:

    Soos in die vorige voorbeeld, begin ons met die definisie van 'n paar name:

    • Bereik A2:B5 in CA-blad is vernoem CA_Verkope .
    • Reik A2:B5 in FL-vel word FL_Verkope genoem.
    • Reik A2:B5 in KS-vel word KS_Verkope .

    Soos jy kan sien, het al die genoemde reekse 'n gemeenskaplike deel ( Verkope ) en unieke dele ( CA , FL , KS ). Maak asseblief seker dat u u reekse op 'n soortgelyke wyse benoem aangesien dit noodsaaklik is vir die formule wat ons gaan bou.

    Formule 1. INDIREKTE OPSOEK om data dinamies van verskillende blaaie af te trek

    As jou taak is om data van verskeie velle af te haal, is 'n VLOOKUP INDIREKTE formule die beste oplossing – kompak en maklik om te verstaan.

    Vir hierdie voorbeeld organiseer ons die opsommingstabel op hierdie manier:

    • Voer die produkte van belang in A2 en A3 in. Dit is ons opsoekwaardes.
    • Voer die unieke dele van die genoemde reekse in B1, C1 en D1 in.

    En nou koppel ons die sel wat die unieke deel (B1) bevat aaneen. met die gemeenskaplike deel ("_Sales"), en voer die resulterende string na INDIREKTE:

    INDIRECT(B$1&"_Sales")

    Die INDIREKTE funksie verander die string in 'n naam wat Excel kan verstaan, en jy sit dit in die tabel_skikking argument van VLOOKUP:

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

    Bostaande formule gaan na B2, en dan kopieer jy dit af en na regs.

    Asseblief let daarop dat, in die opsoekwaarde ($A2),ons het die kolomkoördinaat met absolute selverwysing gesluit sodat die kolom vas bly wanneer die formule na regs gekopieer word. In die B$1-verwysing het ons die ry gesluit omdat ons wil hê die kolomkoördinaat moet verander en 'n gepaste naamdeel na INDIREK verskaf, afhangende van die kolom waarin die formule gekopieer is:

    As jou hooftabel anders georganiseer is, die opsoekwaardes in 'n ry en unieke dele van die reeksname in 'n kolom, dan moet jy die rykoördinaat in die opsoekwaarde (B$1) en die kolomkoördinaat in die naamdele sluit ($A2):

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

    Formule 2. VLOOKUP en geneste IF's om verskeie velle op te soek

    In situasie wanneer jy net twee of drie opsoekblaaie, kan jy 'n redelik eenvoudige VLOOKUP-formule met geneste IF-funksies gebruik om die korrekte blad te kies gebaseer op die sleutelwaarde in 'n spesifieke sel:

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

    Where $A2 is die opsoekwaarde (itemnaam) en B$1 is die sleutelwaarde (toestand):

    In hierdie geval hoef jy nie noodwendig name te definieer nie en kan jy eksterne gebruik verwysings om na 'n ander blad of werkboek te verwys.

    Vir meer formule exa voorbeelde, sien asseblief Hoe om VLOOKUP oor verskeie velle in Excel te gebruik.

    Dit is hoe om VLOOKUP in Excel te gebruik. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!

    Oefenwerkboek om af te laai

    Gevorderde VLOOKUP formule voorbeelde (.xlsxlêer)

    enkele opsoekwaarde wat jy spesifiseer.

    Om dit te oorkom, kan jy 'n helperkolom byvoeg en die waardes van twee opsoekkolomme ( Klant en Produk ) daar aaneenskakel. Dit is belangrik dat die helperkolom die meeste links kolom in die tabelskikking moet wees, want dit is waar Excel VLOOKUP altyd vir die opsoekwaarde soek.

    Dus, voeg 'n kolom aan die linkerkant van jou tabel en kopieer die onderstaande formule oor daardie kolom. Dit sal die helperkolom vul met die waardes van kolomme B en C (die spasiekarakter word tussenin aaneengeskakel vir beter leesbaarheid):

    =B2&" "&C2

    En gebruik dan 'n standaard VLOOKUP formule en plek beide kriteria in die opsoekwaarde -argument, geskei met 'n spasie:

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

    Of voer die kriteria in afsonderlike selle in (G1 en G2 in ons geval) en voeg dit saam selle:

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

    Omdat ons 'n waarde van kolom D wil terugstuur, wat vierde in die tabelskikking is, gebruik ons ​​4 vir kol_indeks_getal . Die reeks_soek -argument is op ONWAAR gestel om 'n presiese passing op te soek. Die skermkiekie hieronder wys die resultaat:

    In die geval dat jou opsoektabel in 'n ander vel is, sluit die blad se naam in jou VLOOKUP-formule in. Byvoorbeeld:

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

    Alternatiewelik, skep 'n benoemde reeks vir die opsoektabel (sê, Bestellings ) om die formule makliker te lees:

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

    Vir meer inligting, sien asseblief Hoe omVlookup vanaf 'n ander blad in Excel.

    Let wel. Vir die formule om korrek te werk, moet die waardes in die helperkolom presies op dieselfde manier aaneengeskakel word as in die opsoekwaarde -argument. Ons het byvoorbeeld 'n spasiekarakter gebruik om die kriteria in beide die helperkolom (B2&" "&C2) en VLOOKUP-formule (G1&" "&G2) te skei.

    Formule 2. Excel VLOOKUP met veelvuldige voorwaardes

    In teorie kan jy bogenoemde benadering tot Vlookup meer as twee kriteria gebruik. Daar is egter 'n paar waarskuwings. Eerstens is 'n opsoekwaarde beperk tot 255 karakters, en tweedens laat die werkblad se ontwerp dalk nie toe dat 'n helperkolom bygevoeg word nie.

    Gelukkig bied Microsoft Excel dikwels meer as een manier om dieselfde ding te doen. Om verskeie kriteria op te soek, kan jy óf 'n INDEX MATCH-kombinasie óf die XLOOKUP-funksie gebruik wat onlangs in Office 365 bekendgestel is.

    Om byvoorbeeld op te soek op grond van 3 verskillende waardes ( Datum , Klantnaam en Produk ), gebruik een van die volgende formules:

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

    Waar:

    • G1 is kriteria 1 (datum)
    • G2 is kriteria 2 (kliëntnaam)
    • G3 is kriteria 3 (produk)
    • A2:A11 is opsoek reeks 1 (datums)
    • B2:B11 is opsoekreeks 2 (kliëntname)
    • C2:C11 is opsoekreeks 3 (produkte)
    • D2:D11 is die opbrengs reeks (hoeveelheid)

    Let wel. In alle weergawes behalwe Excel 365, INDEXMATCH moet as 'n CSE-skikkingsformule ingevoer word deur Ctrl + Shift + Enter te druk. In Excel 365 wat dinamiese skikkings ondersteun, werk dit ook as 'n gewone formule.

    Vir die gedetailleerde verduideliking van die formules, sien asseblief:

    • XLOOKUP met veelvuldige kriteria
    • INDEX MATCH formule met veelvuldige kriteria

    Hoe om gebruik VLOOKUP om 2de, 3de of nde passing te kry

    Soos jy reeds weet, kan Excel VLOOKUP slegs een ooreenstemmende waarde haal, meer presies, dit gee die eerste passing terug. Maar wat as daar verskeie passings in jou opsoekskikking is en jy wil die 2de of 3de instansie kry? Die taak klink nogal ingewikkeld, maar die oplossing bestaan ​​wel!

    Formule 1. Vlookup Nde instansie

    Gestel jy het kliëntename in een kolom, die produkte wat hulle gekoop het in 'n ander, en jy soek om die 2de of 3de produk te vind wat deur 'n gegewe kliënt gekoop is.

    Die eenvoudigste manier is om 'n helperkolom aan die linkerkant van die tabel by te voeg soos ons in die eerste voorbeeld gedoen het. Maar hierdie keer sal ons dit invul met klantname en voorkomsnommers soos " John Doe1 ", " John Doe2 ", ens.

    Om die voorkoms te kry, gebruik die COUNTIF-funksie met 'n gemengde reeksverwysing (die eerste verwysing is absoluut en die tweede is relatief soos $B$2:B2). Aangesien die relatiewe verwysing verander op grond van 'n posisie van die sel waar die formule gekopieer is, sal dit in ry 3 $B$2:B3 word, in ry 4 -$B$2:B4, ensovoorts.

    Verbind met die kliëntnaam (B2), neem die formule hierdie vorm aan:

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

    Bogenoemde formule gaan na A2 , en dan kopieer jy dit na soveel selle as wat nodig is.

    Daarna, voer die teikennaam en voorkomsnommer in afsonderlike selle in (F1 en F2), en gebruik die onderstaande formule om 'n spesifieke gebeurtenis op te soek:

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

    Formule 2. Vlookup 2de voorkoms

    As jy op soek is na die 2de instansie van die opsoekwaarde, dan kan jy doen sonder die helperkolom. Skep eerder die tabelskikking dinamies deur die INDIREKTE funksie te gebruik saam met MATCH:

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

    Where:

    • E1 is die opsoekwaarde
    • A2:A11 is die opsoekreeks
    • B11 is die laaste (regs onder) sel van die opsoektabel

    Neem asseblief kennis dat die bogenoemde formule is geskryf vir 'n spesifieke geval waar dataselle in die opsoektabel in ry 2 begin. As jou tabel iewers in die middel van die blad is, gebruik hierdie universele formule, waar A1 die boonste linker sel is van die opsoektabel wat bevat 'n kolomopskrif:

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

    Hoe hierdie formule werk

    Hier is die sleuteldeel van die formule wat 'n dinamiese vlookup-reeks skep:

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

    Die MATCH-funksie opgestel vir presiese passing (0 in die laaste argument) vergelyk die teikennaam (E1) met die lys name (A2:A11) en gee die posisie van die eerste gevind wedstryd, wat 3 isin ons geval. Hierdie nommer gaan gebruik word as die beginrykoördinaat vir die vlookup-reeks, so ons voeg 2 daarby (+1 om die eerste instansie uit te sluit en +1 om ry 1 met die kolomopskrifte uit te sluit). Alternatiewelik kan jy 1+RY(A1) gebruik om die nodige aanpassing outomaties te bereken op grond van die posisie van die kopry (A1 in ons geval).

    As gevolg hiervan kry ons die volgende teksstring, wat INDIREK word omgeskakel na 'n reeksverwysing:

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

    Hierdie reeks gaan na die tabel_skikking -argument van VLOOKUP wat dit dwing om in ry 5 te begin soek, en laat die eerste instansie van die opsoekwaarde:

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

    Hoe om veelvuldige waardes in Excel op te soek en terug te gee

    Die Excel VLOOKUP-funksie is ontwerp om net een passing terug te gee. Is daar 'n manier om verskeie gevalle te Vlookup? Ja, daar is, hoewel nie 'n maklike een nie. Dit vereis 'n gekombineerde gebruik van verskeie funksies soos INDEX, SMALL en ROW is 'n skikkingsformule.

    Byvoorbeeld, die onderstaande kan alle voorkomste van die opsoekwaarde F2 in die opsoekreeks B2:B16 vind en veelvuldige terugstuur. pas uit kolom C:

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

    Daar is 2 maniere om die formule in jou werkblad in te voer:

    1. Tik die formule in die eerste sel, druk Ctrl + Shift + Enter , en sleep dit dan af na nog 'n paar selle.
    2. Kies verskeie aangrensende selle in 'n enkele kolom (F1:F11 in die skermkiekie hieronder), tik die formule in en druk Ctrl +Shift + Enter om dit te voltooi.

    In elk geval, die aantal selle waarin jy die formule invoer, moet gelyk wees aan of groter as die maksimum aantal moontlike passings.

    Vir die gedetailleerde verduideliking van die formulelogika en meer voorbeelde, sien asseblief Hoe om veelvuldige waardes in Excel op te soek.

    Hoe om op te soek in rye en kolomme (tweerigtingopsoek)

    Tweerigting-opsoek (ook bekend as matriksopsoek of 2-dimensionele opsoek ) is 'n fancy woord om 'n waarde op te soek by die kruising van 'n sekere ry en kolom. Daar is 'n paar verskillende maniere om tweedimensionele opsoek in Excel te doen, maar aangesien die fokus van hierdie tutoriaal op die VLOOKUP-funksie is, sal ons dit natuurlik gebruik.

    Vir hierdie voorbeeld neem ons die onderstaande tabel met maandelikse verkope en werk 'n VLOOKUP formule uit om die verkoopsyfer vir 'n spesifieke item in 'n gegewe maand op te spoor.

    Met itemname in A2:A9, maandname in B1:F1, die teikenitem in I1 en die teikenmaand in I2, gaan die formule soos volg:

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

    Hoe hierdie formule werk

    Die kern van die formule is die standaard VLOOKUP-funksie wat soek vir 'n presiese passing met die opsoekwaarde in I1. Maar aangesien ons nie presies weet in watter kolom die verkope vir 'n spesifieke maand is nie, kan ons nie die kolomnommer direk aan die kol_indeks_num argument verskaf nie. Om daardie kolom te vind, gebruik ons ​​die volgende MATCHfunksie:

    MATCH(I2, A1:F1, 0)

    Vertaal in Engels, sê die formule: soek die I2-waarde in A1:F1 op en gee sy relatiewe posisie in die skikking terug. Deur 0 aan die 3de argument te verskaf, gee jy MATCH opdrag om die waarde presies gelyk aan die opsoekwaarde te vind (dit is soos om ONWAAR te gebruik vir die reeks_opsoek argument van VLOOKUP).

    Sedert Mrt is in die 4de kolom in die opsoekskikking, die MATCH-funksie gee 4 terug, wat direk na die kol_indeks_getal argument van VLOOKUP:

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

    asseblief gaan let op dat alhoewel die maandname in kolom B begin, ons A1:I1 vir die opsoekskikking gebruik. Dit word gedoen sodat die getal wat deur MATCH teruggestuur word, ooreenstem met die kolom se posisie in tabel_skikking van VLOOKUP.

    Om meer maniere te leer om matriks-opsoek in Excel uit te voer, sien asseblief INDEX MATCH MATCH en ander formules vir 2-dimensionele opsoek.

    Hoe om veelvuldige Vlookup in Excel te doen (geneste Vlookup)

    Soms kan dit gebeur dat jou hooftabel en opsoektabel nie 'n enkele kolom in het nie common, wat verhoed dat jy 'n Vlookup tussen twee tabelle doen. Daar bestaan ​​egter 'n ander tabel, wat nie die inligting bevat waarna jy soek nie, maar het een gemeenskaplike kolom met die hooftabel en 'n ander gemeenskaplike kolom met die opsoektabel.

    In onderstaande beeld illustreer die situasie:

    Die doel is om pryse na die hooftabel te kopieer gebaseer op Item-ID's . Die probleem is dat die tabel wat pryse bevat nie die Item ID's het nie, wat beteken dat ons twee Vlookups in een formule moet doen.

    Kom ons skep gerieflikheidshalwe 'n paar van benoemde reekse eerste:

    • Opsoektabel 1 word genoem Produkte (D3:E10)
    • Opsoektabel 2 word genoem Pryse ( G3:H10 )

    Die tabelle kan in dieselfde of verskillende werkkaarte wees.

    En nou sal ons die sogenaamde dubbele Vlookup uitvoer , aka geneste Vlookup .

    Maak eers 'n VLOOKUP-formule om die produknaam in die Opsoektabel 1 (genoem Produkte ) te vind, gebaseer op die item id (A3):

    =VLOOKUP(A3, Products, 2, FALSE)

    Volgende, plaas die bogenoemde formule in die opsoekwaarde -argument van 'n ander VLOOKUP-funksie om pryse van Opsoektabel 2 (genaamd te trek) Pryse ) gebaseer op die produknaam wat deur die geneste VLOOKUP teruggestuur word:

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

    Die skermkiekie hieronder wys ons geneste Vlookup-formule in aksie:

    Hoe om verskeie velle dinamies op te soek

    Soms, y u het dalk data in dieselfde formaat wat oor verskeie werkblaaie verdeel is. En jou doel is om data uit 'n spesifieke blad te trek, afhangende van die sleutelwaarde in 'n gegewe sel.

    Dit kan makliker wees om uit 'n voorbeeld te verstaan. Kom ons sê, jy het 'n paar streekverkoopverslae in dieselfde formaat, en jy soek die verkoopsyfers vir 'n spesifieke produk in sekere

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.