Täiustatud VLOOKUP Excelis: mitmekordne, topelt, sisseehitatud

  • Jaga Seda
Michael Brown

Need näited õpetavad teile, kuidas Vlookup mitu kriteeriumi, tagastada konkreetne eksemplar või kõik vasted, teha dünaamiline Vlookup mitmes lehel ja palju muud.

See on sarja teine osa, mis aitab teil kasutada Exceli VLOOKUPi võimsust. Näited eeldavad, et te teate, kuidas see funktsioon töötab. Kui mitte, siis on mõistlik alustada VLOOKUPi põhilistest kasutusvõimalustest Excelis.

Enne edasiliikumist tuletan teile lühidalt meelde süntaksit:

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

Nüüd, kui kõik on samal leheküljel, vaatame lähemalt edasijõudnud VLOOKUP-valemi näiteid:

    Kuidas Vlookup mitu kriteeriumi

    Exceli VLOOKUP-funktsioon on tõesti kasulik, kui on vaja otsida kogu andmebaasis teatud väärtust. Siiski puudub tal üks oluline omadus - selle süntaks võimaldab ainult ühte otsinguväärtust. Aga mis siis, kui soovite otsida mitme tingimusega? Teil on mõned erinevad lahendused, mille vahel valida.

    Valem 1. VLOOKUP kahe kriteeriumiga

    Oletame, et teil on tellimuste nimekiri ja soovite leida koguse 2 kriteeriumi alusel, Kliendi nimi ja Toode Keeruliseks teguriks on see, et iga klient tellis mitu toodet, nagu on näidatud alljärgnevas tabelis:

    Tavaline VLOOKUP-vormel ei tööta selles olukorras, sest see tagastab esimese leitud vaste, mis põhineb teie poolt määratud ühel otsinguväärtusel.

    Selle probleemi lahendamiseks võite lisada abisamba ja liita kahe otsingusamba väärtused ( Klient ja Toode ) sinna. Oluline on, et abisammas peaks olema kõige vasakpoolsem tabeli massiivi veergu, sest Excel VLOOKUP otsib alati otsinguväärtust sealt.

    Seega, lisage oma tabeli vasakule poole veerg ja kopeerige alljärgnev valem üle selle veeru. See täidab abisammas veeru väärtustega veergudest B ja C (paremaks loetavuseks on tühikukirjamärk nende vahele liidetud):

    =B2&" "&C2

    Ja siis kasutage standardset VLOOKUP valemit ja paigutage mõlemad kriteeriumid tabelisse lookup_value argument, mis on eraldatud tühikuga:

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

    Või sisestage kriteeriumid eraldi lahtritesse (meie puhul G1 ja G2) ja ühendage need lahtrid:

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

    Kuna me tahame tagastada väärtuse veerust D, mis on tabeli massiivi neljas, siis kasutame 4 jaoks col_index_num . range_lookup argument on seatud FALSE-ks, et Vlookup oleks täpne vaste. Allpool olev ekraanipilt näitab tulemust:

    Juhul kui teie otsingutabeli asukoht on teine leht , lisage oma VLOOKUP-valemisse lehe nimi. Näiteks:

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

    Teise võimalusena looge otsingutabeli jaoks nimeline vahemik (näiteks, Tellimused ), et valemit oleks lihtsam lugeda:

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

    Lisateavet leiate jaotisest Kuidas Exceli teisest lehest Vlookup'i teha.

    Märkus. Selleks, et valem töötaks õigesti, tuleb abisammas olevad väärtused liita täpselt samamoodi nagu lookup_value argument. Näiteks kasutasime tühikut, et eraldada kriteeriumid nii abisambas (B2&" "&C2) kui ka VLOOKUP-valemis (G1&" "&G2).

    Valem 2. Excel VLOOKUP mitme tingimusega

    Teoreetiliselt saate kasutada eespool kirjeldatud lähenemisviisi Vlookup'i kasutamiseks rohkem kui kahe kriteeriumi puhul. Siiski on paar ettevaatust. Esiteks on otsinguväärtuse piiriks 255 tähemärki ja teiseks ei pruugi töölehe kujundus lubada abisammiku lisamist.

    Õnneks pakub Microsoft Excel sageli rohkem kui ühte võimalust ühe ja sama asja tegemiseks. Mitme kriteeriumi Vlookup'i tegemiseks saate kasutada kas INDEX MATCH kombinatsiooni või hiljuti Office 365-s kasutusele võetud XLOOKUP funktsiooni.

    Näiteks, et otsida 3 erineva väärtuse alusel ( Kuupäev , Kliendi nimi ja Toode ), kasutage ühte järgmistest valemitest:

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

    Kus:

    • G1 on kriteerium 1 (kuupäev)
    • G2 on kriteerium 2 (kliendi nimi)
    • G3 on kriteerium 3 (toode)
    • A2:A11 on otsinguväli 1 (kuupäevad)
    • B2:B11 on otsinguväli 2 (klientide nimed)
    • C2:C11 on otsinguväli 3 (tooted)
    • D2:D11 on tagasisaatmisvahemik (kogus).

    Märkus. Kõikides versioonides, välja arvatud Excel 365, tuleb INDEX MATCH sisestada CSE massiivi valemina, vajutades Ctrl + Shift + Enter. Excel 365-s, mis toetab dünaamilisi massiive, töötab see ka tavalise valemina.

    Valemite üksikasjalikku selgitust vt:

    • XLOOKUP mitme kriteeriumiga
    • INDEX MATCH valem mitme kriteeriumiga

    Kuidas kasutada VLOOKUP-i, et saada 2., 3. või n-ndat mängu

    Nagu te juba teate, saab Exceli VLOOKUP välja tuua ainult ühe sobiva väärtuse, täpsemalt, ta tagastab esimese leitud vastuse. Aga mis siis, kui teie otsingumassiivis on mitu vastet ja te soovite saada 2. või 3. eksemplari? Ülesanne kõlab üsna keeruliselt, kuid lahendus on olemas!

    Valem 1. Vlookup Nth instance (Vlookup Nth)

    Oletame, et teil on klientide nimed ühes veerus, nende ostetud tooted teises veerus ja te otsite 2. või 3. toodet, mille antud klient on ostnud.

    Kõige lihtsam viis on lisada tabeli vasakule poole abisammas, nagu me tegime esimeses näites. Kuid seekord täidame selle klientide nimede ja esinemisnumbritega nagu " John Doe1 ", " John Doe2 " jne.

    Et saada esinemist, kasutage funktsiooni COUNTIF koos segatud vahemiku viitega (esimene viide on absoluutne ja teine on suhteline nagu $B$2:B2). Kuna suhteline viide muutub vastavalt lahtri positsioonile, kuhu valemit kopeeritakse, muutub see 3. reas $B$2:B3, 4. reas $B$2:B4 jne.

    Koos kliendinimega (B2) on valem järgmine:

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

    Ülaltoodud valem läheb A2 ja seejärel kopeerite selle nii paljudesse lahtritesse kui vaja.

    Pärast seda sisestage sihtnimi ja esinemise number eraldi lahtritesse (F1 ja F2) ja kasutage allpool esitatud valemit, et otsida konkreetset esinemist:

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

    Valem 2. Vlookup 2. esinemine

    Kui otsite otsinguväärtuse 2. instantsi, siis võite ilma abisammasteta hakkama saada. Selle asemel looge tabelimassiiv dünaamiliselt, kasutades funktsiooni INDIRECT koos funktsiooniga MATCH:

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

    Kus:

    • E1 on otsinguväärtus
    • A2:A11 on otsinguväli
    • B11 on tabeli viimane (alumine parempoolne) lahter.

    Pange tähele, et ülaltoodud valem on kirjutatud erijuhtumi jaoks, kus otsingutabeli andmerakud algavad reas 2. Kui teie tabel asub kusagil lehe keskel, kasutage seda universaalset valemit, kus A1 on otsingutabeli vasakpoolne ülemine lahter, mis sisaldab veeru päise:

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

    Kuidas see valem töötab

    Siin on võtmeosa valemist, mis loob dünaamiline vlookup vahemik :

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

    Funktsioon MATCH, mis on konfigureeritud täpse vaste jaoks (0 viimases argumendis), võrdleb sihtnime (E1) nimede loeteluga (A2:A11) ja tagastab esimese leitud vaste positsiooni, mis meie puhul on 3. Seda numbrit kasutatakse vlookup vahemiku alguse rea koordinaadina, seega lisame sellele 2 (+1, et välistada esimene eksemplar ja +1, et välistada rida 1 koos veeru päistega).Teise võimalusena võite kasutada 1+ROW(A1), et arvutada vajalik korrigeerimine automaatselt päise rea (meie puhul A1) positsiooni põhjal.

    Tulemusena saame järgmise tekstistringi, mille INDIRECT teisendab vahemiku viiteks:

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

    See vahemik läheb table_array VLOOKUPi argument, mis sunnib seda otsingut alustama reast 5, jättes välja esimese otsinguväärtuse eksemplari:

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

    Kuidas Vlookup ja mitme väärtuse tagastamine Excelis

    Exceli funktsioon VLOOKUP on mõeldud ainult ühe vaste tagastamiseks. Kas on võimalik Vlookup'i mitmele instantsile? Jah, on olemas, kuigi mitte lihtne. See nõuab mitme funktsiooni kombineeritud kasutamist, näiteks INDEX, SMALL ja ROW on massiivi valem.

    Näiteks võib alljärgnevaga leida kõik otsinguväärtuse F2 esinemised otsinguvälile B2:B16 ja tagastada mitu kokkulangevust veerust C:

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

    Valemi sisestamiseks töölehel on 2 võimalust:

    1. Sisestage valem esimesse lahtrisse, vajutage Ctrl + Shift + Enter ja lohistage see seejärel veel mõnda lahtrisse.
    2. Valige mitu kõrvuti asetsevat lahtrit ühes veerus (F1:F11 alloleval ekraanipildil), sisestage valem ja vajutage Ctrl + Shift + Enter, et seda täiendada.

    Mõlemal juhul peaks lahtrite arv, kuhu sisestate valemi, olema võrdne või suurem kui maksimaalne võimalik vastete arv.

    Valemi loogika üksikasjaliku selgituse ja rohkem näiteid leiate dokumendist Kuidas VLOOKUP mitu väärtust Excelis.

    Kuidas Vlookup ridade ja veergude vahel (kahesuunaline otsing)

    Kahesuunaline otsing (ehk maatriksi otsing või 2-dimensiooniline otsing ) on väljamõeldud sõna väärtuse otsimiseks teatud rea ja veeru ristumiskohas. Excelis on olemas mitu erinevat viisi, kuidas teha kahemõõtmelist otsingut, kuid kuna selle õpetuse keskmes on VLOOKUP-funktsioon, siis kasutame loomulikult seda.

    Selle näite jaoks võtame allpool oleva tabeli igakuise müügiga ja töötame välja VLOOKUP-valemi, et saada konkreetse artikli müügiarv antud kuul.

    Kui artikli nimed on A2:A9, kuu nimed B1:F1, sihtartikkel I1 ja sihtkuu I2, siis valem on järgmine:

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

    Kuidas see valem töötab

    Valemi tuum on standardne VLOOKUP funktsioon, mis otsib täpset kokkulangevust otsinguväärtusega I1. Kuid kuna me ei tea, millises täpses veerus on konkreetse kuu müük, ei saa me veeru numbrit otse esitada. col_index_num Selle veeru leidmiseks kasutame järgmist MATCH-funktsiooni:

    MATCH(I2, A1:F1, 0)

    Inglise keelde tõlgituna ütleb valem: otsi I2 väärtust A1:F1 ja tagasta selle suhteline asukoht massiivi sees. Andes 3. argumendile 0, annad MATCHile korralduse leida väärtus, mis on täpselt võrdne otsinguväärtusega (see on nagu FALSE kasutamise puhul. range_lookup argument VLOOKUP).

    Kuna Mar on otsingumassiivi 4. veerus, siis funktsioon MATCH tagastab 4, mis läheb otse loendisse col_index_num VLOOKUPi argument:

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

    Pöörake tähelepanu, et kuigi kuude nimed algavad veerus B, kasutame me otsingumassiivi A1:I1. Seda tehakse selleks, et MATCHi poolt tagastatud number vastaks veeru positsioonile veerus table_array VLOOKUP.

    Rohkem võimalusi maatriksi otsingu teostamiseks Excelis leiate INDEX MATCH MATCH ja muud 2-mõõtmelise otsingu valemid.

    Kuidas teha Excelis mitu Vlookup'i (nested Vlookup)

    Mõnikord võib juhtuda, et teie põhitabelil ja otsingutabelil ei ole ühtegi ühist veergu, mis takistab teil kahe tabeli vahel Vlookup'i tegemist. Siiski on olemas teine tabel, mis ei sisalda otsitavat teavet, kuid millel on üks ühine veerg põhitabeliga ja teine ühine veerg otsingutabeliga.

    Allpool olev pilt illustreerib olukorda:

    Eesmärk on kopeerida hinnad põhitabelisse, mis põhineb Eseme ID-d Probleem seisneb selles, et hindu sisaldav tabel ei sisalda Eseme ID-d , mis tähendab, et peame tegema kaks Vlookup'i ühes valemis.

    Lihtsuse huvides loome kõigepealt paar nimelist vahemikku:

    • Otsingutabeli 1 nimi on Tooted (D3:E10)
    • Otsingutabeli 2 nimi on Hinnad ( G3:H10 )

    Tabelid võivad olla samal või erinevatel töölehtedel.

    Ja nüüd teostame nn. topelt Vlookup , ehk sisseehitatud Vlookup .

    Kõigepealt tehke VLOOKUP valem, et leida toote nimi Lookup tabelis 1 (nimega Tooted ), mille aluseks on kirje id (A3):

    =VLOOKUP(A3, tooted, 2, FALSE)

    Järgmisena pange ülaltoodud valemiga lookup_value teise VLOOKUP-funktsiooni argument, et tõmmata hinnad Lookup tabelist 2 (nimega Hinnad ), mis põhineb sisendatud VLOOKUPi poolt tagastatud tootenimel:

    =VLOOKUP(VLOOKUP(A3, Tooted, 2, FALSE), Hinnad, 2, FALSE)

    Allpool olev ekraanipilt näitab meie sisseehitatud Vlookup valemit töös:

    Kuidas Vlookup mitu lehte dünaamiliselt

    Mõnikord võivad andmed olla samas formaadis jagatuna mitmele töölehele. Ja teie eesmärk on tõmmata andmeid konkreetselt lehelt sõltuvalt võtmeväärtusest konkreetses lahtris.

    Seda on ehk lihtsam mõista ühe näite põhjal. Oletame, et teil on mitu piirkondlikku müügiaruannet samas formaadis ja soovite saada konkreetse toote müüginumbreid teatavates piirkondades:

    Nagu eelmises näites, alustame mõne nime määratlemisega:

    • CA-lehe vahemik A2:B5 kannab nime CA_Müük .
    • FL-lehe vahemik A2:B5 kannab nime FL_Müük .
    • KS-lehe vahemik A2:B5 kannab nime KS_Müük .

    Nagu näete, on kõigil nimetatud vahemikel ühine osa ( Müük ) ja ainulaadsed osad ( CA , FL , KS ). Palun nimetage oma vahemikud kindlasti sarnaselt, sest see on oluline valemile, mida me hakkame ehitama.

    Valem 1. INDIRECT VLOOKUP andmete dünaamiliseks tõmbamiseks erinevatelt lehtedelt

    Kui teie ülesanne on otsida andmeid mitmest lehest, on VLOOKUP INDIRECT valem parim lahendus - kompaktne ja kergesti mõistetav.

    Selle näite puhul korraldame kokkuvõtliku tabeli selliselt:

    • Sisestage huvipakkuvad tooted A2 ja A3. Need on meie otsinguväärtused.
    • Sisestage B1, C1 ja D1 nimeliste vahemike unikaalsed osad.

    Ja nüüd ühendame unikaalset osa (B1) sisaldava lahtri ühise osaga ("_Sales") ja söödame saadud stringi INDIRECTi:

    INDIRECT(B$1&"_Müük")

    Funktsioon INDIRECT muudab stringi Exceli jaoks arusaadavaks nimeks ja te panete selle faili table_array VLOOKUPi argument:

    =VLOOKUP($A2, INDIRECT(B$1&"_Müük"), 2, FALSE)

    Ülaltoodud valem läheb B2 ja seejärel kopeerite selle alla ja paremale.

    Pöörake tähelepanu, et otsinguväärtuses ($A2) oleme lukustanud veeru koordinaadi absoluutse lahtriviitega, et veeru jääks fikseeritud, kui valemit paremale kopeeritakse. Viites B$1 lukustasime rea, sest tahame, et veeru koordinaat muutuks ja varustaksime INDIRECTi sobiva nimeosaga sõltuvalt veerust, kuhu valemit kopeeritakse:

    Kui teie põhitabel on korraldatud erinevalt, otsinguväärtused reas ja vahemiku nimede unikaalsed osad veerus, siis peaksite lukustama rea koordinaadi otsinguväärtuses (B$1) ja veeru koordinaadi nimede osades ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Müük"), 2, FALSE)

    Valem 2. VLOOKUP ja sisseehitatud IF-id mitme lehe vaatamiseks

    Olukorras, kus teil on ainult kaks või kolm otsingulehte, saate kasutada üsna lihtsat VLOOKUP-vormelit koos sisendatud IF-funktsioonidega, et valida õige leht konkreetse lahtri võtmeväärtuse alusel:

    =VLOOKUP($A2, IF(B$1="CA", CA_Müük, IF(B$1="FL", FL_Müük, IF(B$1="KS", KS_Müük,""))), 2, FALSE)

    Kus $A2 on otsinguväärtus (elemendi nimi) ja B$1 on võtmeväärtus (olek):

    Sellisel juhul ei pea te tingimata nimesid määratlema ja võite kasutada väliseid viiteid, et viidata teisele lehele või töövihikule.

    Rohkem valemite näiteid vt Kuidas VLOOKUP-i mitmel lehel Excelis kasutada.

    Nii kasutatakse VLOOKUP-i Excelis. Tänan teid lugemise eest ja loodan, et näeme teid järgmisel nädalal meie blogis!

    Praktiline töövihik allalaadimiseks

    Täiustatud VLOOKUP valemite näited (.xlsx fail)

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.