Zaawansowane VLOOKUP w Excelu: wielokrotne, podwójne, zagnieżdżone

  • Udostępnij To
Michael Brown

Te przykłady nauczą Cię, jak Vlookup wiele kryteriów, zwrócić konkretną instancję lub wszystkie mecze, zrobić dynamiczny Vlookup w wielu arkuszach, i więcej.

Jest to druga część serii, która pomoże Ci wykorzystać moc VLOOKUP w Excelu. Przykłady sugerują, że wiesz jak działa ta funkcja. Jeśli nie, to nie bez powodu należy zacząć od podstawowych zastosowań VLOOKUP w Excelu.

Zanim przejdę dalej, pozwolę sobie krótko przypomnieć składnię:

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

Teraz, gdy wszyscy są na tej samej stronie, przyjrzyjmy się bliżej przykładom zaawansowanej formuły VLOOKUP:

    Jak zrobić Vlookup dla wielu kryteriów

    Funkcja VLOOKUP w Excelu jest naprawdę pomocna, jeśli chodzi o przeszukiwanie całej bazy danych w poszukiwaniu określonej wartości. Brakuje jej jednak ważnej cechy - jej składnia pozwala tylko na jedną wartość lookupu. Co jednak, jeśli chcesz szukać z kilkoma warunkami? Istnieje kilka różnych rozwiązań, z których możesz wybierać.

    Formuła 1. VLOOKUP z dwoma kryteriami

    Załóżmy, że masz listę zamówień i chcesz znaleźć ilość na podstawie 2 kryteriów, Nazwa klienta oraz Produkt Czynnikiem komplikującym jest fakt, że każdy klient zamówił wiele produktów, jak pokazano w poniższej tabeli:

    Zwykła formuła VLOOKUP nie zadziała w tej sytuacji, ponieważ zwraca pierwsze znalezione dopasowanie na podstawie pojedynczej wartości lookup, którą określasz.

    Aby to przezwyciężyć, możesz dodać kolumnę pomocniczą i połączyć wartości z dwóch kolumn lookup ( Klient oraz Produkt ) tam. Ważne jest, aby kolumna pomocnicza była najbardziej na lewo kolumna w tablicy, ponieważ to w niej Excel VLOOKUP zawsze szuka wartości lookup.

    Dodaj więc kolumnę po lewej stronie swojej tabeli i skopiuj poniższą formułę przez tę kolumnę. Spowoduje to wypełnienie kolumny pomocnika wartościami z kolumn B i C (znak spacji jest konkatenowany między nimi dla lepszej czytelności):

    =B2&" "&C2

    A następnie użyj standardowej formuły VLOOKUP i umieść oba kryteria w lookup_value argument, oddzielone spacją:

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

    Albo wprowadzić kryteria w osobnych komórkach (w naszym przypadku G1 i G2) i dokonać konkatenacji tych komórek:

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

    Ponieważ chcemy zwrócić wartość z kolumny D, która jest czwarta w tablicy, używamy 4 dla col_index_num . range_lookup argument jest ustawiony na FALSE, aby Vlookup miał dokładne dopasowanie. Poniższy zrzut ekranu pokazuje wynik:

    W przypadku, gdy twoja tabela lookup znajduje się w inny arkusz , uwzględnij nazwę arkusza w swojej formule VLOOKUP, na przykład:

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

    Alternatywnie, utwórz nazwany zakres dla tabeli lookup (powiedzmy, Zamówienia ), aby wzór był łatwiejszy do odczytania:

    =VLOOKUP(G1&""&G2, Zamówienia, 4, FALSE)

    Aby uzyskać więcej informacji, zobacz Jak zrobić Vlookup z innego arkusza w programie Excel.

    Uwaga. Aby formuła działała poprawnie, wartości w kolumnie pomocniczej powinny być konkatenowane dokładnie w taki sam sposób, jak w kolumnie lookup_value argument. Na przykład użyliśmy znaku spacji do oddzielenia kryteriów zarówno w kolumnie pomocniczej (B2&" "&C2), jak i w formule VLOOKUP (G1&" "&G2).

    Formuła 2. Excel VLOOKUP z wieloma warunkami

    Teoretycznie można użyć powyższego podejścia do Vlookup więcej niż dwóch kryteriów. Istnieje jednak kilka zastrzeżeń. Po pierwsze, wartość lookup jest ograniczona do 255 znaków, a po drugie, konstrukcja arkusza może nie pozwolić na dodanie kolumny pomocniczej.

    Na szczęście Microsoft Excel często zapewnia więcej niż jeden sposób na zrobienie tej samej rzeczy. Aby Vlookupować wiele kryteriów, można użyć kombinacji INDEX MATCH lub funkcji XLOOKUP wprowadzonej niedawno w Office 365.

    Na przykład, aby wyszukać na podstawie 3 różnych wartości ( Data , Nazwa klienta oraz Produkt ), należy użyć jednego z poniższych wzorów:

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

    Gdzie:

    • G1 jest kryterium 1 (data)
    • G2 jest kryterium 2 (nazwa klienta)
    • G3 oznacza kryteria 3 (produkt)
    • A2:A11 jest zakresem lookup 1 (daty)
    • B2:B11 jest zakresem lookup 2 (nazwy klientów)
    • C2:C11 jest zakresem lookup 3 (produkty)
    • D2:D11 jest zakresem powrotnym (ilość).

    Uwaga. We wszystkich wersjach oprócz Excela 365, INDEX MATCH należy wprowadzić jako formułę tablicową CSE, naciskając Ctrl + Shift + Enter. W Excelu 365, który obsługuje dynamiczne tablice, działa również jako zwykła formuła.

    Szczegółowe wyjaśnienie wzorów znajduje się w:

    • XLOOKUP z wieloma kryteriami
    • Formuła INDEX MATCH z wieloma kryteriami

    Jak użyć VLOOKUP, aby uzyskać drugi, trzeci lub n-ty mecz

    Jak już wiesz, Excel VLOOKUP może pobrać tylko jedną pasującą wartość, a dokładniej, zwraca pierwsze znalezione dopasowanie. Ale co, jeśli w twojej tablicy lookup jest kilka dopasowań i chcesz uzyskać 2. lub 3. instancję? Zadanie brzmi dość skomplikowanie, ale rozwiązanie istnieje!

    Wzór 1. Vlookup N-ta instancja

    Załóżmy, że masz nazwy klientów w jednej kolumnie, produkty, które kupili w innej, i szukasz znaleźć 2 lub 3 produkt kupiony przez danego klienta.

    Najprostszym sposobem jest dodanie kolumny pomocniczej po lewej stronie tabeli, tak jak to zrobiliśmy w pierwszym przykładzie, ale tym razem wypełnimy ją nazwami klientów i numerami wystąpień jak " John Doe1 ", " John Doe2 ", itd.

    Aby uzyskać wystąpienie, użyj funkcji COUNTIF z mieszanym odniesieniem do zakresu (pierwsze odniesienie jest bezwzględne, a drugie względne, jak $B$2:B2). Ponieważ odniesienie względne zmienia się na podstawie pozycji komórki, w której formuła jest kopiowana, w wierszu 3 stanie się $B$2:B3, w wierszu 4 - $B$2:B4, i tak dalej.

    Po konkatenacji z nazwą klienta (B2) formuła przyjmuje taką postać:

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

    Powyższa formuła trafia do A2, a następnie kopiujesz ją w dół do tylu komórek, ile potrzeba.

    Następnie należy wprowadzić nazwę celu i numer wystąpienia w osobnych komórkach (F1 i F2), a następnie użyć poniższej formuły do Vlookup określonego wystąpienia:

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

    Formuła 2. Vlookup 2. wystąpienie

    Jeśli szukasz 2. instancji wartości lookup, to możesz obejść się bez kolumny pomocniczej. Zamiast tego utwórz tablicę dynamicznie za pomocą funkcji INDIRECT wraz z MATCH:

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

    Gdzie:

    • E1 jest wartością odniesienia
    • A2:A11 jest zakresem lookup.
    • B11 jest ostatnią (prawą dolną) komórką tabeli odnośników

    Zwróć uwagę, że powyższa formuła została napisana dla konkretnego przypadku, w którym komórki danych w tabeli lookup zaczynają się w wierszu 2. Jeśli Twoja tabela znajduje się gdzieś w środku arkusza, użyj tej uniwersalnej formuły, gdzie A1 to lewa górna komórka tabeli lookup zawierająca nagłówek kolumny:

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

    Jak działa ta formuła

    Oto kluczowa część formuły, która tworzy dynamiczny zakres vlookup :

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

    Funkcja MATCH skonfigurowana na dopasowanie dokładne (0 w ostatnim argumencie) porównuje nazwę docelową (E1) z listą nazwisk (A2:A11) i zwraca pozycję pierwszego znalezionego dopasowania, czyli w naszym przypadku 3. Ta liczba będzie wykorzystana jako współrzędna wiersza początkowego dla zakresu vlookup, więc dodajemy do niej 2 (+1, aby wykluczyć pierwszą instancję i +1, aby wykluczyć wiersz 1 z nagłówkami kolumn).Alternatywnie możesz użyć 1+ROW(A1), aby automatycznie obliczyć niezbędne dostosowanie na podstawie pozycji wiersza nagłówka (A1 w naszym przypadku).

    W efekcie otrzymujemy następujący ciąg tekstowy, który INDIRECT konwertuje na referencję zakresu:

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

    Ten zakres idzie do tablica argument VLOOKUP zmuszając go do rozpoczęcia wyszukiwania w wierszu 5, pomijając pierwszą instancję wartości lookup:

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

    Jak Vlookup i zwrócić wiele wartości w programie Excel

    Funkcja VLOOKUP w Excelu została zaprojektowana tak, aby zwracać tylko jedno dopasowanie. Czy istnieje sposób na Vlookup wielu instancji? Tak, istnieje, choć nie jest to łatwe. Wymaga to połączonego użycia kilku funkcji, takich jak INDEX, SMALL i ROW to formuła tablicowa.

    Na przykład poniżej można znaleźć wszystkie wystąpienia wartości lookup F2 w zakresie lookup B2:B16 i zwrócić wiele dopasowań z kolumny C:

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

    Istnieją 2 sposoby wprowadzania formuły do arkusza:

    1. Wpisz formułę w pierwszej komórce, naciśnij Ctrl + Shift + Enter , a następnie przeciągnij ją w dół do kilku kolejnych komórek.
    2. Wybierz kilka sąsiednich komórek w jednej kolumnie (F1:F11 na poniższym zrzucie ekranu), wpisz formułę i naciśnij Ctrl + Shift + Enter, aby ją zakończyć.

    Tak czy inaczej, liczba komórek, w których wprowadzasz formułę, powinna być równa lub większa od maksymalnej liczby możliwych dopasowań.

    Aby uzyskać szczegółowe wyjaśnienie logiki formuły i więcej przykładów, zobacz Jak VLOOKUP wiele wartości w programie Excel.

    Jak zrobić Vlookup w wierszach i kolumnach (two-way lookup)

    Wyszukiwanie dwukierunkowe (aka. przeglądanie matrycy lub 2-dimensjonalny lookup ) to wymyślne słowo na szukanie wartości na przecięciu określonego wiersza i kolumny. Istnieje kilka różnych sposobów na wykonanie dwuwymiarowego lookupu w Excelu, ale ponieważ w tym tutorialu skupiamy się na funkcji VLOOKUP, będziemy naturalnie z niej korzystać.

    W tym przykładzie weźmiemy poniższą tabelę z miesięczną sprzedażą i opracujemy formułę VLOOKUP, aby pobrać liczbę sprzedaży dla konkretnego przedmiotu w danym miesiącu.

    Mając nazwy pozycji w A2:A9, nazwy miesięcy w B1:F1, pozycję docelową w I1 i miesiąc docelowy w I2, formuła przebiega następująco:

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

    Jak działa ta formuła

    Podstawą formuły jest standardowa funkcja VLOOKUP, która szuka dokładnego dopasowania do wartości lookup w I1. Ponieważ jednak nie wiemy, w której dokładnie kolumnie znajduje się sprzedaż dla danego miesiąca, nie możemy podać numeru kolumny bezpośrednio do funkcji col_index_num argument. Aby znaleźć tę kolumnę, używamy następującej funkcji MATCH:

    MATCH(I2, A1:F1, 0)

    Po przetłumaczeniu na angielski, formuła mówi: wyszukaj wartość I2 w A1:F1 i zwróć jej względną pozycję w tablicy. Podając 0 jako trzeci argument, instruujesz MATCH, aby znalazł wartość dokładnie równą wartości lookup (to tak, jakby użyć FALSE dla range_lookup argument VLOOKUP).

    Od Mar znajduje się w 4. kolumnie tablicy lookup, funkcja MATCH zwraca 4, które trafia bezpośrednio do col_index_num argument VLOOKUP:

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

    Proszę zwrócić uwagę, że chociaż nazwy miesięcy zaczynają się w kolumnie B, to w tablicy lookup używamy A1:I1. Robimy to po to, aby liczba zwracana przez MATCH odpowiadała pozycji kolumny w tablica VLOOKUP.

    Aby poznać więcej sposobów na wykonanie lookupu macierzy w Excelu, zobacz INDEX MATCH MATCH i inne formuły dla lookupu dwuwymiarowego.

    Jak zrobić wielokrotny Vlookup w Excelu (zagnieżdżony Vlookup)

    Czasami może się zdarzyć, że Twoja główna tabela i tabela wyszukująca nie mają ani jednej wspólnej kolumny, co uniemożliwia wykonanie Vlookup pomiędzy dwoma tabelami. Istnieje jednak inna tabela, która nie zawiera informacji, których szukasz, ale ma jedną wspólną kolumnę z główną tabelą i inną wspólną kolumnę z tabelą wyszukującą.

    Poniższy obrazek ilustruje tę sytuację:

    Celem jest skopiowanie cen do głównej tabeli na podstawie Identyfikatory pozycji Problem polega na tym, że tabela zawierająca ceny nie ma Identyfikatory pozycji , czyli będziemy musieli wykonać dwa Vlookups w jednej formule.

    Dla ułatwienia, stwórzmy najpierw kilka nazwanych zakresów:

    • Tablica Lookup 1 ma nazwę Produkty (D3:E10)
    • Tablica Lookup 2 ma nazwę Ceny ( G3:H10 )

    Tabele mogą znajdować się w tym samym lub różnych arkuszach.

    A teraz wykonamy tzw. podwójny Vlookup , vel zagnieżdżony Vlookup .

    Najpierw wykonaj formułę VLOOKUP, aby znaleźć nazwę produktu w tabeli Lookup 1 (o nazwie Produkty ) na podstawie identyfikatora pozycji (A3):

    =VLOOKUP(A3, Produkty, 2, FALSE)

    Następnie umieść powyższą formułę w lookup_value argument innej funkcji VLOOKUP, aby wyciągnąć ceny z tabeli Lookup 2 (o nazwie Ceny ) na podstawie nazwy produktu zwróconej przez zagnieżdżony VLOOKUP:

    =VLOOKUP(VLOOKUP(A3, Produkty, 2, FALSE), Ceny, 2, FALSE)

    Poniższy zrzut ekranu pokazuje naszą zagnieżdżoną formułę Vlookup w akcji:

    Jak dynamicznie wykonać Vlookup wielu arkuszy

    Czasami możesz mieć dane w tym samym formacie podzielone na kilka arkuszy, a twoim celem jest wyciągnięcie danych z konkretnego arkusza w zależności od wartości kluczowej w danej komórce.

    Może to być łatwiejsze do zrozumienia na przykładzie. Powiedzmy, że masz kilka regionalnych raportów sprzedaży w tym samym formacie i szukasz uzyskać dane dotyczące sprzedaży określonego produktu w niektórych regionach:

    Podobnie jak w poprzednim przykładzie, zaczynamy od zdefiniowania kilku nazw:

    • Zakres A2:B5 w arkuszu CA ma nazwę CA_Sales .
    • Zakres A2:B5 w arkuszu FL ma nazwę FL_Sales .
    • Zakres A2:B5 w arkuszu KS nosi nazwę KS_Sprzedaż .

    Jak widać, wszystkie nazwane zakresy mają wspólną część ( Sprzedaż ) oraz części niepowtarzalne ( CA , FL , KS ). Pamiętaj, aby w podobny sposób nazwać swoje zakresy, ponieważ jest to niezbędne dla formuły, którą będziemy budować.

    Formuła 1. INDIRECT VLOOKUP do dynamicznego wyciągania danych z różnych arkuszy

    Jeśli Twoim zadaniem jest pobieranie danych z wielu arkuszy, formuła VLOOKUP INDIRECT jest najlepszym rozwiązaniem - kompaktowym i łatwym do zrozumienia.

    Dla tego przykładu organizujemy tabelę zbiorczą w ten sposób:

    • Wprowadź interesujące nas produkty do A2 i A3. To są nasze wartości odnośników.
    • Wpisz unikalne części nazwanych zakresów w B1, C1 i D1.

    A teraz konkatenujemy komórkę zawierającą część unikalną (B1) z częścią wspólną ("_Sprzedaż") i podajemy powstały ciąg do INDIRECT:

    INDIRECT(B$1&"_Sprzedaż")

    Funkcja INDIRECT przekształca ciąg znaków w nazwę zrozumiałą dla Excela, a Ty umieszczasz ją w tablica argument VLOOKUP:

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

    Powyższa formuła trafia do B2, a następnie kopiujesz ją w dół i w prawo.

    Proszę zwrócić uwagę, że w wartości lookup ($A2) zablokowaliśmy współrzędną kolumny z bezwzględnym odwołaniem do komórki, aby kolumna pozostała stała, gdy formuła zostanie skopiowana w prawo. W odwołaniu B$1 zablokowaliśmy wiersz, ponieważ chcemy, aby współrzędna kolumny zmieniała się i dostarczała odpowiednią część nazwy do INDIRECT w zależności od kolumny, do której kopiowana jest formuła:

    Jeśli twoja główna tabela jest zorganizowana inaczej, wartości lookup w wierszu i unikalne części nazw zakresów w kolumnie, to powinieneś zablokować współrzędną wiersza w wartości lookup (B$1) i współrzędną kolumny w częściach nazw ($A2):

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

    Formuła 2. VLOOKUP i zagnieżdżone IF do przeglądania wielu arkuszy

    W sytuacji, gdy masz tylko dwa lub trzy arkusze lookup, możesz użyć dość prostej formuły VLOOKUP z zagnieżdżonymi funkcjami IF, aby wybrać właściwy arkusz na podstawie wartości kluczowej w określonej komórce:

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

    Gdzie $A2 jest wartością lookup (nazwa elementu), a B$1 jest wartością kluczową (stan):

    W tym przypadku nie trzeba koniecznie definiować nazw i można użyć zewnętrznych odwołań do innego arkusza lub skoroszytu.

    Aby uzyskać więcej przykładów formuł, zobacz Jak VLOOKUP przez wiele arkuszy w programie Excel.

    Oto jak używać VLOOKUP w Excelu. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!

    Zeszyt ćwiczeń do pobrania

    Zaawansowane przykłady formuły VLOOKUP (plik .xlsx)

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.