Tartalomjegyzék
Ezek a példák megtanítják, hogyan lehet több kritériumot Vlookup-olni, egy adott példányt vagy az összes találatot visszaadni, dinamikus Vlookup-ot végezni több lapon, és még sok másra is.
Ez a sorozat második része, amely segít az Excel VLOOKUP funkciójának kihasználásában. A példák feltételezik, hogy ismeri a funkció működését. Ha nem, akkor értelemszerűen a VLOOKUP Excelben történő alapvető felhasználásával kell kezdeni.
Mielőtt továbblépnénk, hadd emlékeztessem Önöket röviden a szintaxisra:
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])Most, hogy mindenki egy oldalon áll, nézzük meg közelebbről a fejlett VLOOKUP képlet példáit:
Hogyan lehet több kritériumot Vlookup
Az Excel VLOOKUP funkciója nagyon hasznos, amikor egy adatbázisban kell keresni egy bizonyos értéket. Azonban hiányzik belőle egy fontos funkció - a szintaxisa csak egy keresési értéket tesz lehetővé. De mi van akkor, ha több feltétel mellett szeretne keresni? Többféle megoldás közül választhat.
Forma 1. VLOOKUP két kritériummal
Tegyük fel, hogy van egy lista a megrendelésekről, és 2 kritérium alapján szeretné megtalálni a mennyiséget, Ügyfél neve és Termék Bonyolítja a helyzetet, hogy minden ügyfél több terméket rendelt, amint az az alábbi táblázatban látható:
A szokásos VLOOKUP formula ebben a helyzetben nem működik, mivel az első talált egyezést adja vissza az Ön által megadott egyetlen keresési érték alapján.
Ennek kiküszöbölésére hozzáadhat egy segédoszlopot, és a két keresőoszlop értékeit összekapcsolhatja ( Ügyfél és Termék Fontos, hogy a segédoszlopnak a legbalra oszlop a táblázat tömbjében, mert az Excel VLOOKUP mindig ebben keresi a keresési értéket.
Adjunk tehát egy oszlopot a táblázat bal oldalához, és másoljuk át az alábbi képletet az oszlopon. Ez feltölti a segédoszlopot a B és C oszlop értékeivel (a szóköz karaktert a jobb olvashatóság érdekében összekapcsoljuk):
=B2&" "&C2
Ezután használjon egy szabványos VLOOKUP képletet, és helyezze mindkét kritériumot az lookup_value argumentum, szóközzel elválasztva:
=VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)
Vagy írja be a kritériumokat külön cellákba (esetünkben a G1 és a G2), és kapcsolja össze ezeket a cellákat:
=VLOOKUP(G1&""&G2, A2:D11, 4, FALSE)
Mivel a D oszlopból szeretnénk visszaadni egy értéket, ami a negyedik a táblázat tömbjében, ezért a 4-es értéket használjuk a col_index_num . range_lookup argumentumot FALSE értékre állítjuk, hogy a Vlookup pontos egyezést adjon. Az alábbi képernyőkép mutatja az eredményt:
Abban az esetben, ha a keresőtáblája a egy másik lap , a VLOOKUP-képletben szerepeljen a lap neve. Például:
=VLOOKUP(G1&""&G2, Orders!A2:D11, 4, FALSE)
Alternatív megoldásként hozzon létre egy nevesített tartományt a keresőtáblához (mondjuk, Megrendelések ), hogy a képlet könnyebben olvasható legyen:
=VLOOKUP(G1&" "&G2, Orders, 4, FALSE)
További információért lásd: Hogyan lehet az Excelben egy másik lapról Vlookupot létrehozni.
Megjegyzés: Ahhoz, hogy a képlet helyesen működjön, a segédoszlop értékeit pontosan ugyanúgy kell összekapcsolni, mint a lookup_value Például a segédoszlopban (B2&" "&C2) és a VLOOKUP-képletben (G1&" "&G2) is szóköz karakterrel választottuk el a kritériumokat.
2. képlet. Excel VLOOKUP több feltétellel
Elméletileg a fenti megközelítést használhatja a Vlookup több mint két kritériumra. Van azonban néhány fenntartás. Először is, a keresési érték 255 karakterre korlátozódik, másodszor, a munkalap kialakítása nem biztos, hogy lehetővé teszi segédoszlop hozzáadását.
Szerencsére a Microsoft Excel gyakran egynél több módot kínál ugyanannak a dolognak a végrehajtására. A több kritérium Vlookup funkciójához használhatja az INDEX MATCH kombinációt vagy az Office 365-ben nemrég bevezetett XLOOKUP funkciót.
Például 3 különböző érték alapján történő kereséshez ( Dátum , Ügyfél neve és Termék ), használja a következő képletek egyikét:
=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)
Hol:
- G1 az 1. kritérium (dátum)
- G2 a 2. kritérium (ügyfél neve)
- G3 a 3. kritérium (termék)
- A2:A11 az 1. keresési tartomány (dátumok)
- B2:B11 a 2. keresési tartomány (ügyfélnevek)
- C2:C11 a 3. keresési tartomány (termékek)
- D2:D11 a visszatérési tartomány (mennyiség)
Megjegyzés: Az Excel 365 kivételével minden verzióban az INDEX MATCH-t CSE tömbképletként kell megadni a Ctrl + Shift + Enter billentyűkombinációval. A dinamikus tömböket támogató Excel 365-ben ez normál képletként is működik.
A képletek részletes magyarázatát lásd:
- XLOOKUP több kritériummal
- INDEX MATCH formula több kritériummal
Hogyan használjuk a VLOOKUP-ot a 2., 3. vagy n-edik mérkőzés megszerzéséhez?
Mint már tudod, az Excel VLOOKUP csak egy megfelelő értéket tud lekérni, pontosabban az első talált egyezést adja vissza. De mi van akkor, ha több egyezés van a keresőtömbben, és a 2. vagy 3. példányt szeretnéd lekérni? A feladat elég bonyolultnak hangzik, de a megoldás létezik!
Forma 1. Vlookup N-edik példány
Tegyük fel, hogy az egyik oszlopban a vásárlók nevei vannak, a másikban az általuk vásárolt termékek, és az adott vásárló által vásárolt 2. vagy 3. terméket keresi.
A legegyszerűbb módja, ha a táblázat bal oldalához hozzáadunk egy segédoszlopot, ahogyan azt az első példában is tettük. De ezúttal az ügyfélnevekkel és az előfordulásszámokkal töltjük fel, mint " John Doe1 ", " John Doe2 ", stb.
Az előforduláshoz használja a COUNTIF függvényt vegyes tartományhivatkozással (az első hivatkozás abszolút, a második relatív, mint például $B$2:B2). Mivel a relatív hivatkozás annak a cellának a pozíciója alapján változik, ahová a képletet másolja, a 3. sorban $B$2:B3 lesz, a 4. sorban $B$2:B4, és így tovább.
Az ügyfél nevével (B2) összekapcsolva a képlet a következő formát ölti:
=B2&COUNTIF($B$2:B2, B2)
A fenti képlet az A2-be kerül, majd másolja le annyi cellába, ahány cellába szükséges.
Ezután adja meg a cél nevét és az előfordulás számát külön cellákban (F1 és F2), és használja az alábbi képletet egy adott előfordulás kereséséhez:
=VLOOKUP(F1&F2, A2:C11, 3, FALSE)
2. képlet. Vlookup 2. előfordulás
Ha a keresési érték 2. példányát keresi, akkor a segédoszlopot nélkülözheti. Ehelyett hozza létre a táblázat tömbjét dinamikusan az INDIRECT függvény és a MATCH használatával:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)
Hol:
- E1 a keresési érték
- A2:A11 a keresési tartomány
- A B11 a keresőtábla utolsó (jobb alsó) cellája.
Vegye figyelembe, hogy a fenti képlet egy olyan speciális esetre íródott, amikor a keresőtábla adatcellái a 2. sorban kezdődnek. Ha a táblázata valahol a lap közepén van, használja ezt az univerzális képletet, ahol A1 a keresőtábla bal felső cellája, amely egy oszlopfejlécet tartalmaz:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)
Hogyan működik ez a képlet
Itt van a képlet kulcsfontosságú része, amely létrehoz egy dinamikus vlookup tartomány :
INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")
A pontos egyezésre (0 az utolsó argumentumban) konfigurált MATCH függvény összehasonlítja a célnevet (E1) a nevek listájával (A2:A11), és visszaadja az első talált egyezés pozícióját, ami esetünkben 3. Ezt a számot fogjuk használni a vlookup tartomány kezdő sorkoordinátájaként, ezért hozzáadunk 2-t (+1 az első példány kizárásához és +1 az oszlopcímeket tartalmazó 1. sor kizárásához).Alternatívaként használhatja az 1+ROW(A1) parancsot, hogy a szükséges kiigazítást automatikusan kiszámítsa a fejléc sorának (esetünkben A1) pozíciója alapján.
Ennek eredményeként a következő szöveges karakterláncot kapjuk, amelyet az INDIRECT tartományhivatkozássá alakít:
INDIRECT("A"&5&":B11") -> A5:B11
Ez a tartomány a table_array argumentummal a VLOOKUP-ot arra kényszeríti, hogy az 5. sorban kezdje a keresést, kihagyva a keresési érték első példányát:
VLOOKUP(E1, A5:B11, 2, FALSE)
Hogyan lehet Vlookup és több értéket visszaadni az Excelben
Az Excel VLOOKUP funkciója úgy van kialakítva, hogy csak egy egyezést adjon vissza. Van mód arra, hogy a Vlookup több példányt is visszaadjon? Igen, van, bár nem egyszerű. Ehhez több függvény, például az INDEX, SMALL és ROW kombinált használata szükséges egy tömbképlet.
Például az alábbiakban az F2 keresési érték minden előfordulását megkeresi a B2:B16 keresési tartományban, és a C oszlopból több egyezést ad vissza:
{=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}
A képletet 2 módon lehet beírni a munkalapba:
- Írja be a képletet az első cellába, nyomja meg a Ctrl + Shift + Enter billentyűkombinációt, majd húzza lefelé néhány további cellába.
- Jelöljön ki több szomszédos cellát egy oszlopban (F1:F11 az alábbi képernyőképen), írja be a képletet, majd nyomja meg a Ctrl + Shift + Enter billentyűkombinációt a befejezéshez.
Akárhogy is, a cellák számának, amelyekbe a képletet beírja, egyenlőnek vagy nagyobbnak kell lennie, mint a lehetséges egyezések maximális száma.
A képlet logikájának részletes magyarázatáért és további példákért lásd: Hogyan kell több értéket VLOOKUP-olni az Excelben?
Hogyan kell Vlookup sorokban és oszlopokban (kétirányú keresés)
Kétirányú keresés (más néven mátrix keresés vagy 2-dimenziós keresés ) egy divatos szó arra, hogy egy adott sor és oszlop metszéspontjában keressünk egy értéket. Az Excelben többféleképpen is végezhetünk kétdimenziós keresést, de mivel ebben a bemutatóban a VLOOKUP függvényen van a hangsúly, természetesen azt fogjuk használni.
Ehhez a példához az alábbi táblázatot vesszük a havi eladásokat tartalmazó táblázatot, és egy VLOOKUP-formulát dolgozunk ki, hogy egy adott hónapban egy adott tétel eladási adatát lekérjük.
Az A2:A9 elemnevek, a B1:F1 hónapnevek, az I1 célelem és az I2 célhónap esetén a képlet a következőképpen néz ki:
=VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)
Hogyan működik ez a képlet
A képlet lényege a szabványos VLOOKUP függvény, amely az I1-ben lévő keresési értékkel való pontos egyezést keresi. Mivel azonban nem tudjuk, hogy pontosan melyik oszlopban vannak az adott hónap eladásai, nem adhatjuk meg az oszlop számát közvetlenül a VLOOKUP függvénynek. col_index_num Az oszlop megkereséséhez a következő MATCH függvényt használjuk:
MATCH(I2, A1:F1, 0)
Magyarra lefordítva a képlet azt mondja: keresd meg az I2 értéket az A1:F1-ben és add vissza a relatív pozícióját a tömbben. Ha a 3. argumentumnak 0-t adsz meg, akkor utasítod a MATCH-ot, hogy keresse meg a keresési értékkel pontosan megegyező értéket (ez olyan, mintha a FALSE-t használnád a range_lookup VLOOKUP argumentum).
Mivel Márc a keresési tömb 4. oszlopában van, a MATCH függvény 4-et ad vissza, ami közvetlenül a col_index_num a VLOOKUP argumentuma:
VLOOKUP(I1, A2:F9, 4, FALSE)
Kérjük, figyeljen arra, hogy bár a hónapok nevei a B oszlopban kezdődnek, a keresőtömbhöz az A1:I1-et használjuk. Ez azért van így, hogy a MATCH által visszaadott szám megfeleljen az oszlop pozíciójának a következő oszlopban table_array VLOOKUP.
A mátrixkeresés Excelben történő végrehajtásának további módjait lásd az INDEX MATCH MATCH és más képletek a kétdimenziós kereséshez.
Hogyan készítsünk több Vlookupot az Excelben (beágyazott Vlookup)
Néha előfordulhat, hogy a fő táblának és a keresőtáblának nincs egyetlen közös oszlopa sem, ami megakadályozza, hogy Vlookupot végezzen a két tábla között. Létezik azonban egy másik tábla, amely nem tartalmazza a keresett információt, de van egy közös oszlopa a fő táblával és egy másik közös oszlopa a keresőtáblával.
Az alábbi kép szemlélteti a helyzetet:
A cél az árak átmásolása a fő táblázatba az alábbiak alapján Tétel azonosítók A probléma az, hogy az árakat tartalmazó táblázatban nincs meg a Tétel azonosítók , ami azt jelenti, hogy egy képletben két Vlookupot kell végrehajtanunk.
Az egyszerűség kedvéért először hozzunk létre néhány nevesített tartományt:
- Az 1. keresőtábla neve Termékek (D3:E10)
- A 2. keresőtábla neve Árak ( G3:H10 )
A táblázatok lehetnek ugyanazon vagy különböző munkalapokon.
Most pedig elvégezzük az ún. dupla Vlookup , más néven beágyazott Vlookup .
Először is készítsen egy VLOOKUP képletet a termék nevének megkeresésére az 1. keresőtáblában (neve Termékek ) a tétel azonosítója alapján (A3):
=VLOOKUP(A3, Termékek, 2, FALSE)
Ezután tegye a fenti képletet a lookup_value egy másik VLOOKUP függvény argumentumát, hogy az árakat a 2. keresőtáblából (név szerint Árak ) a beágyazott VLOOKUP által visszaadott terméknév alapján:
=VLOOKUP(VLOOKUP(A3, Termékek, 2, FALSE), Árak, 2, FALSE)
Az alábbi képernyőkép a beágyazott Vlookup képletet mutatja működés közben:
Hogyan lehet dinamikusan több lapot Vlookup-olni
Néha előfordulhat, hogy az adatok ugyanabban a formátumban több munkalapra vannak felosztva. És a cél az, hogy egy adott cellában lévő kulcsértéktől függően egy adott lapról húzza ki az adatokat.
Ezt egy példán keresztül talán könnyebb megérteni. Tegyük fel, hogy van néhány azonos formátumú regionális értékesítési jelentés, és egy adott termék értékesítési adatait szeretné megkapni bizonyos régiókban:
Az előző példához hasonlóan néhány név definiálásával kezdjük:
- A CA lap A2:B5 tartományának neve CA_Sales .
- Az FL lap A2:B5 tartományának neve FL_Sales .
- A KS lap A2:B5 tartományának neve KS_Sales .
Mint látható, az összes megnevezett tartománynak van egy közös része ( Értékesítés ) és egyedi alkatrészek ( CA , FL , KS ). Kérjük, ügyeljen arra, hogy a tartományokat hasonló módon nevezze el, mivel ez elengedhetetlen a képlethez, amelyet fel fogunk építeni.
1. képlet: INDIRECT VLOOKUP a különböző lapokból történő dinamikus adatátvételhez
Ha az Ön feladata több lapról történő adatlekérdezés, a VLOOKUP INDIRECT képlet a legjobb megoldás - kompakt és könnyen érthető.
Ebben a példában az összefoglaló táblázatot így rendezzük:
- Írja be a kívánt termékeket az A2 és A3 mezőbe. Ezek a keresési értékeink.
- Írja be a B1, C1 és D1 tartományok egyedi részeit.
Most pedig az egyedi részt tartalmazó cellát (B1) összekapcsoljuk a közös résszel ("_Sales"), és az így kapott karakterláncot az INDIRECT-be tápláljuk:
INDIRECT(B$1&"_Sales")
Az INDIRECT függvény átalakítja a karakterláncot egy olyan névvé, amelyet az Excel megért, és ezt a table_array a VLOOKUP argumentuma:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
A fenti képlet a B2-re kerül, majd másolja lefelé és jobbra.
Kérjük, figyeljen arra, hogy a keresési értékben ($A2) az oszlopkoordinátát abszolút cellahivatkozással zároltuk, hogy az oszlop fix maradjon, amikor a képletet jobbra másoljuk. A B$1 hivatkozásban a sort zároltuk, mert azt akarjuk, hogy az oszlopkoordináta változzon, és megfelelő névrészt adjon az INDIRECT-nek attól függően, hogy melyik oszlopba másoljuk a képletet:
Ha a fő táblád másképp van megszervezve, a keresési értékek egy sorban, a tartománynevek egyedi részei pedig egy oszlopban, akkor a keresési értékben a sorkoordinátát (B$1), a névrészekben pedig az oszlopkoordinátát ($A2) kell rögzítened:
=VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)
Képlet 2. VLOOKUP és beágyazott IF-ek több lap kereséséhez
Olyan helyzetekben, amikor csak két vagy három keresési lapja van, egy meglehetősen egyszerű VLOOKUP képletet használhat beágyazott IF függvényekkel a megfelelő lap kiválasztására egy adott cellában lévő kulcsérték alapján:
=VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,""))), 2, FALSE)
Ahol $A2 a keresési érték (elemnév) és B$1 a kulcsérték (állapot):
Ebben az esetben nem feltétlenül kell neveket definiálnia, és külső hivatkozásokkal hivatkozhat egy másik lapra vagy munkafüzetre.
További képletpéldákért lásd: Hogyan lehet a VLOOKUP-ot több Excel-lapon keresztül használni.
Így kell használni a VLOOKUP-ot az Excelben. Köszönöm, hogy elolvastad, és remélem, jövő héten találkozunk a blogon!
Gyakorlati munkafüzet letölthető
Haladó VLOOKUP képlet példák (.xlsx fájl)