Spis treści
Ten tutorial pokazuje, jak używać INDEKSU i MATCH w Excelu i jak to jest lepsze niż VLOOKUP.
W kilku ostatnich artykułach, zrobiliśmy dobry wysiłek, aby wyjaśnić podstawy funkcji VLOOKUP dla początkujących i zapewnić bardziej złożone przykłady formuły VLOOKUP dla użytkowników mocy. A teraz spróbuję, jeśli nie mówić ci o użyciu VLOOKUP, to przynajmniej pokazać alternatywny sposób robienia pionowego lookupu w programie Excel.
"Po co mi to?" możesz się zastanawiać. Ponieważ VLOOKUP ma liczne ograniczenia, które w wielu sytuacjach mogą uniemożliwić uzyskanie pożądanego wyniku. Z drugiej strony kombinacja INDEX MATCH jest bardziej elastyczna i ma wiele rewelacyjnych cech, które sprawiają, że pod wieloma względami przewyższa VLOOKUP.
Funkcje Excel INDEX i MATCH - podstawy
Ponieważ celem tego tutorialu jest zademonstrowanie alternatywnego sposobu wykonywania vlookup w Excelu poprzez wykorzystanie kombinacji funkcji INDEX i MATCH, nie będziemy się rozwodzić nad ich składnią i zastosowaniem. Obejmiemy tylko minimum niezbędne do zrozumienia ogólnej idei, a następnie przyjrzymy się dogłębnie przykładom formuł, które ujawniają wszystkie zalety stosowania INDEX MATCH zamiast VLOOKUP.
Funkcja INDEX - składnia i zastosowanie
Funkcja INDEX programu Excel zwraca wartość w tablicy na podstawie podanych przez użytkownika numerów wierszy i kolumn. Składnia funkcji INDEX jest prosta:
INDEX(tablica, wiersz_num, [kolumna_num])Poniżej znajduje się bardzo proste wyjaśnienie każdego parametru:
- macierz - zakres komórek, z których ma być zwrócona wartość.
- suma wierszy - numer wiersza w tablicy, z którego ma zostać zwrócona wartość. Jeżeli pominięto, to wymagana jest kolumna_num.
- kolumna_num - numer kolumny w tablicy, z której ma być zwrócona wartość. Jeżeli pominięto, to wymagany jest wiersz_num.
Więcej informacji na ten temat można znaleźć w artykule Funkcja INDEX w Excelu.
A oto przykład formuły INDEX w najprostszej postaci:
=INDEX(A1:C10,2,3)
Formuła wyszukuje w komórkach od A1 do C10 i zwraca wartość komórki z 2 wiersza i 3 kolumny, czyli komórki C2.
Bardzo proste, prawda? Jednak podczas pracy z prawdziwymi danymi prawie nigdy nie wiesz, który wiersz i kolumna chcesz, to jest, gdzie funkcja MATCH przychodzi z pomocą.
Funkcja MATCH - składnia i zastosowanie
Funkcja MATCH w Excelu wyszukuje wartość szukaną w zakresie komórek i zwraca położenie względne tej wartości w zakresie.
Składnia funkcji MATCH jest następująca:
MATCH(lookup_value, lookup_array, [match_type])- lookup_value - szukaną liczbę lub wartość tekstową.
- lookup_array - zakres przeszukiwanych komórek.
- dopasowanie_typu - określa czy zwracać dokładne dopasowanie czy najbliższe dopasowanie:
- 1 lub pominięty - znajduje największą wartość, która jest mniejsza lub równa wartości lookup. Wymaga sortowania tablicy lookup w porządku rosnącym.
- 0 - znajduje pierwszą wartość, która jest dokładnie równa wartości lookup. W kombinacji INDEX / MATCH prawie zawsze potrzebujesz dokładnego dopasowania, więc ustawiasz trzeci argument swojej funkcji MATCH na 0.
- -1 - znajduje najmniejszą wartość, która jest większa lub równa lookup_value. Wymaga sortowania tablicy lookup w porządku malejącym.
Na przykład, jeśli zakres B1:B3 zawiera wartości "New-York", "Paris", "London", poniższa formuła zwraca liczbę 3, ponieważ "London" jest trzecim wpisem w zakresie:
=MATCH("Londyn",B1:B3,0)
Więcej informacji na ten temat można znaleźć w artykule Funkcja MATCH w Excelu.
Na pierwszy rzut oka przydatność funkcji MATCH może wydawać się wątpliwa. Kogo obchodzi pozycja wartości w zakresie? To, co chcemy wiedzieć, to sama wartość.
Przypomnę, że względna pozycja wartości lookup (tj. numery wierszy i kolumn) jest dokładnie tym, co musisz dostarczyć do suma wierszy oraz kolumna_num argumenty funkcji INDEX. Jak pamiętasz, Excel INDEX potrafi znaleźć wartość na styku danego wiersza i kolumny, ale nie potrafi określić, o który dokładnie wiersz i kolumnę chodzi.
Jak używać funkcji INDEX MATCH w Excelu
Teraz, gdy znasz już podstawy, wierzę, że zaczęło to mieć sens, jak MATCH i INDEX działają razem. W skrócie, INDEX znajduje wartość lookup przez numery kolumn i wierszy, a MATCH dostarcza te numery. To wszystko!
W przypadku wyszukiwania pionowego używasz funkcji MATCH tylko do określenia numeru wiersza, a zakres kolumn podajesz bezpośrednio do INDEX:
INDEKS ( aby zwrócić wartość z kolumny , MATCH ( wartość podglądu , kolumna do oglądania w górę , 0))Wciąż masz trudności, aby to zrozumieć? Może łatwiej będzie to zrozumieć na przykładzie. Załóżmy, że masz listę stolic państw i ich populacji:
Aby znaleźć populację pewnej stolicy, powiedzmy stolicy Japonii, użyj następującej formuły INDEX MATCH:
=INDEX(C2:C10, MATCH("Japan", A2:A10, 0))
Teraz przeanalizujmy, co tak naprawdę robią poszczególne składniki tej formuły:
- Funkcja MATCH wyszukuje wartość lookup "Japonia" w zakresie A2:A10 i zwraca liczbę 3, ponieważ "Japonia" jest trzecia w tablicy lookup.
- Numer wiersza przechodzi bezpośrednio do suma wierszy argument INDEX nakazujący mu zwrócić wartość z tego wiersza.
Tak więc powyższa formuła zamienia się w prosty INDEX(C2:C,3), który mówi, żeby szukać w komórkach od C2 do C10 i wyciągnąć wartość z 3. komórki z tego zakresu, czyli C4, bo zaczynamy liczyć od drugiego rzędu.
Nie chcesz kodować miasta w formule? Wprowadź go w jakiejś komórce, powiedzmy F1, dostarcz referencję do komórki do MATCH, a otrzymasz dynamiczną formułę lookup:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Ważna uwaga! Liczba wierszy w macierz argument INDEX powinien odpowiadać liczbie wierszy w lookup_array argument MATCH, w przeciwnym razie formuła da nieprawidłowy wynik.
Zaraz, zaraz... dlaczego nie użyjemy po prostu następującej formuły Vlookup? Jaki jest sens marnowania czasu na próbowanie rozgryzienia arkana pokrętności Excela MATCH INDEX?
=VLOOKUP(F1, A2:C10, 3, FALSE)
W tym przypadku nie ma sensu :) Ten prosty przykład służy tylko do celów demonstracyjnych, abyś mógł poczuć, jak funkcje INDEKS i MATCH działają razem. Inne przykłady, które pojawią się poniżej, pokażą Ci prawdziwą moc tej kombinacji, która z łatwością radzi sobie z wieloma złożonymi scenariuszami, gdy VLOOKUP się potyka.
Wskazówki:
- W Excelu 365 i Excelu 2021 można skorzystać z nowocześniejszej formuły INDEX XMATCH.
- Dla Google Sheets, zobacz przykłady formuł z INDEX MATCH w tym artykule.
DOPASOWANIE INDEKSOWE a VLOOKUP
Przy podejmowaniu decyzji o wyborze funkcji do wyszukiwania pionowego, większość guru Excela zgadza się, że INDEX MATCH jest znacznie lepsza niż VLOOKUP. Jednak wiele osób nadal pozostaje przy VLOOKUP, po pierwsze dlatego, że jest prostsza, a po drugie dlatego, że nie do końca rozumieją wszystkie korzyści płynące z używania formuły INDEX MATCH w Excelu. Bez takiego zrozumienia nikt nie jest skłonny zainwestować swojego czasu w naukę bardziej skomplikowanej formuły INDEX MATCH.składnia.
Poniżej wskażę najważniejsze zalety MATCH INDEX nad VLOOKUP, a Ty zdecyduj, czy jest to godny dodatek do Twojego arsenału w Excelu.
4 główne powody, dla których warto używać INDEX MATCH zamiast VLOOKUP
- Right to left lookup. Jak każdy wykształcony użytkownik wie, VLOOKUP nie może patrzeć w lewo, co oznacza, że wartość szukana powinna zawsze znajdować się w najbardziej wysuniętej na lewo kolumnie tabeli. INDEX MATCH może z łatwością wykonać left lookup! Poniższy przykład pokazuje to w działaniu: How to Vlookup a value to the left in Excel.
- Bezpiecznie wstawiaj lub usuwaj kolumny. Formuły VLOOKUP ulegają uszkodzeniu lub dostarczają nieprawidłowych wyników, gdy nowa kolumna jest usuwana z lub dodawana do tabeli wyszukującej, ponieważ składnia VLOOKUP wymaga określenia numeru indeksu kolumny, z której chcemy pobrać dane. Oczywiście, gdy dodajemy lub usuwamy kolumny, numer indeksu ulega zmianie.
W przypadku INDEX MATCH określasz zakres zwracanych kolumn, a nie numer indeksu. W rezultacie możesz wstawiać i usuwać dowolną liczbę kolumn bez konieczności aktualizowania każdej powiązanej formuły.
- Brak limitu dla rozmiaru wartości lookup. Podczas korzystania z funkcji VLOOKUP, całkowita długość kryteriów wyszukiwania nie może przekroczyć 255 znaków, w przeciwnym razie skończy się to błędem #VALUE! Tak więc, jeśli twój zbiór danych zawiera długie ciągi, INDEX MATCH jest jedynym działającym rozwiązaniem.
- Większa prędkość przetwarzania. Jeśli Twoje tabele są stosunkowo małe, nie będzie prawie żadnej znaczącej różnicy w wydajności Excela. Ale jeśli Twoje arkusze zawierają setki lub tysiące wierszy, a w konsekwencji setki lub tysiące formuł, MATCH INDEX będzie działał znacznie szybciej niż VLOOKUP, ponieważ Excel będzie musiał przetwarzać tylko kolumny lookup i return, a nie całą tablicę.
Wpływ VLOOKUP na wydajność Excela może być szczególnie widoczny, jeśli Twój skoroszyt zawiera złożone formuły tablicowe, takie jak VLOOKUP i SUM. Chodzi o to, że sprawdzenie każdej wartości w tablicy wymaga osobnego wywołania funkcji VLOOKUP. Zatem im więcej wartości zawiera Twoja tablica i im więcej formuł tablicowych masz w skoroszycie, tym wolniej działa Excel.
Excel INDEX MATCH - przykłady formuł
Znając powody, dla których warto poznać funkcję MATCH INDEX, przejdźmy do najciekawszej części i zobaczmy, jak można zastosować wiedzę teoretyczną w praktyce.
formuła INDEX MATCH do przeglądania od prawej do lewej
Jak już wspomniano, VLOOKUP nie może patrzeć na swoją lewą stronę. Tak więc, jeśli twoje wartości lookup są najbardziej po lewej stronie kolumny, nie ma szans, że formuła Vlookup przyniesie ci wynik, który chcesz. Funkcja INDEX MATCH w Excelu jest bardziej wszechstronna i nie obchodzi tak naprawdę, gdzie znajdują się kolumny lookup i zwrot.
Dla tego przykładu dodamy kolumnę Ranga po lewej stronie naszej przykładowej tabeli i spróbujemy dowiedzieć się, jak stolica Rosji, Moskwa, plasuje się pod względem liczby ludności.
Mając wartość lookup w G1, użyj następującej formuły, aby wyszukać w C2:C10 i zwrócić odpowiednią wartość z A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Wskazówka. Jeśli planujesz użyć formuły INDEX MATCH dla więcej niż jednej komórki, pamiętaj, aby zablokować oba zakresy za pomocą bezwzględnych odniesień do komórek (jak $A$2:$A$10 i $C$2:4C$10), aby nie zostały zniekształcone podczas kopiowania formuły.
INDEX MATCH do wyszukiwania w wierszach i kolumnach
W powyższych przykładach użyliśmy INDEX MATCH jako zamiennika klasycznego VLOOKUP'a do zwrócenia wartości z predefiniowanego zakresu jednokolumnowego. Co jednak w przypadku, gdy potrzebujemy szukać w wielu wierszach i kolumnach? Innymi słowy, co w przypadku, gdy chcemy wykonać tzw. matryca lub dwukierunkowy lookup?
To może brzmieć podstępnie, ale formuła jest bardzo podobna do podstawowej funkcji Excela INDEX MATCH, z jedną tylko różnicą.Zgadnij co?
Po prostu użyj dwóch funkcji MATCH - jednej do uzyskania numeru wiersza i drugiej do uzyskania numeru kolumny. I gratuluję tym z Was, którzy zgadli dobrze :)
A teraz proszę spojrzeć na poniższą tabelę i zbudujmy formułę INDEX MATCH, aby znaleźć liczbę ludności (w milionach) w danym kraju dla danego roku.
Mając kraj docelowy w G1 (wartość vlookup) i rok docelowy w G2 (wartość hlookup), formuła przyjmuje taki kształt:
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Jak działa ta formuła
Zawsze, gdy musisz zrozumieć złożoną formułę Excela, podziel ją na mniejsze części i zobacz, co robi każda pojedyncza funkcja:
MATCH(G1,A2:A11,0)
- wyszukuje poprzez A2:A11 wartość w komórce G1 ("Chiny") i zwraca jej pozycję, która wynosi 2.
MATCH(G2,B1:D1,0))
- przeszukuje B1:D1, aby uzyskać pozycję wartości w komórce G2 ("2015"), która wynosi 3.
Powyższe numery wierszy i kolumn przechodzą do odpowiednich argumentów funkcji INDEX:
INDEX(B2:D11, 2, 3)
W rezultacie otrzymujemy wartość na przecięciu 2. wiersza i 3. kolumny w zakresie B2:D11, czyli wartość w komórce D3. Łatwo? Tak!
Excel INDEX MATCH do wyszukiwania wielu kryteriów
Jeśli miałeś okazję przeczytać nasz tutorial Excel VLOOKUP, prawdopodobnie przetestowałeś już formułę do Vlookup z wieloma kryteriami. Jednak znaczącym ograniczeniem tego podejścia jest konieczność dodania kolumny pomocniczej. Dobrą wiadomością jest to, że funkcja INDEX MATCH w Excelu może szukać również z dwoma lub więcej kryteriami, bez modyfikowania lub restrukturyzacji danych źródłowych!
Oto ogólna formuła INDEX MATCH z wieloma kryteriami:
{=INDEX( zakres , MATCH(1, ( kryteria1 = zakres1 ) * ( kryteria2 = zakres2 ), 0))}Uwaga. Jest to formuła tablicowa, którą należy uzupełnić za pomocą skrótu Ctrl + Shift + Enter.
W przykładowej tabeli poniżej, zakładając, że chcesz znaleźć kwotę na podstawie 2 kryteriów, Klient oraz Produkt .
Następująca formuła INDEX MATCH działa jak należy:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Gdzie C2:C10 to zakres, z którego ma być zwrócona wartość, F1 to kryteria1, A2:A10 to zakres do porównania z kryteriami1, F2 to kryteria2, a B2:B10 to zakres do porównania z kryteriami2.
Pamiętaj, aby poprawnie wprowadzić formułę, naciskając Ctrl + Shift + Enter, a Excel automatycznie zamknie ją nawiasami klamrowymi, jak pokazano na zrzucie ekranu:
Jeśli wolisz nie używać formuł tablicowych w swoich arkuszach, dodaj do formuły jeszcze jedną funkcję INDEX i zakończ ją zwykłym uderzeniem Entera:
Jak działają te formuły
Formuły wykorzystują to samo podejście, co podstawowa funkcja INDEX MATCH, która przegląda pojedynczą kolumnę. Aby ocenić wiele kryteriów, tworzysz dwie lub więcej tablic wartości TRUE i FALSE, które reprezentują dopasowania i niedopasowania dla każdego indywidualnego kryterium, a następnie mnożysz odpowiednie elementy tych tablic. Operacja mnożenia zamienia TRUE i FALSE na 1 i 0,Funkcja MATCH z wartością lookup 1 znajduje pierwszą "1" w tablicy i przekazuje jej pozycję do INDEX, który zwraca wartość w tym wierszu z określonej kolumny.
Formuła bez tablic opiera się na zdolności funkcji INDEX do natywnej obsługi tablic. Drugi INDEX jest skonfigurowany z 0 suma wierszy tak, że przekaże całą tablicę kolumn do MATCH.
To jest wysokopoziomowe wyjaśnienie logiki formuły. Aby uzyskać pełne szczegóły, zobacz Excel INDEX MATCH z wieloma kryteriami.
Excel INDEX MATCH z AVERAGE, MAX, MIN
Microsoft Excel posiada specjalne funkcje pozwalające na znalezienie minimalnej, maksymalnej i średniej wartości w danym zakresie. Ale co w przypadku, gdy potrzebujesz uzyskać wartość z innej komórki, która jest powiązana z tymi wartościami? W takim przypadku użyj funkcji MAX, MIN lub AVERAGE wraz z INDEX MATCH.
INDEX MATCH z MAX
Aby znaleźć największą wartość w kolumnie D i zwrócić wartość z kolumny C w tym samym wierszu, użyj tego wzoru:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH z MIN
Aby zlokalizować najmniejszą wartość w kolumnie D i wyciągnąć powiązaną z nią wartość z kolumny C, użyj tego:
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEX MATCH z AVERAGE
Aby opracować wartość najbliższą średniej w D2:D10 i uzyskać odpowiadającą jej wartość z kolumny C, należy użyć tego wzoru:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
W zależności od tego, jak zorganizowane są twoje dane, podaj 1 lub -1 do trzeciego argumentu (match_type) funkcji MATCH:
- Jeśli kolumna lookup (w naszym przypadku kolumna D) jest posortowana wstępujący , wstaw 1. Formuła obliczy największą wartość, która jest mniej niż lub równa wartości średniej.
- Jeśli kolumna lookup jest posortowana zstępujący wpisz -1. Formuła obliczy najmniejszą wartość, która jest większy niż lub równa wartości średniej.
- Jeśli twoja tablica lookup zawiera wartość dokładnie równy do średniej, można wpisać 0 dla dokładnego dopasowania. Sortowanie nie jest wymagane.
W naszym przykładzie populacje w kolumnie D są posortowane w porządku malejącym, więc używamy -1 dla typu dopasowania. Jako wynik otrzymujemy "Tokio", ponieważ jego populacja (13 189 000) jest najbliższym dopasowaniem, które jest większe niż średnia (12 269 006).
Może zaciekawi Cię fakt, że VLOOKUP też może wykonywać takie obliczenia, ale jako formuła tablicowa: VLOOKUP z AVERAGE, MAX, MIN.
Użycie INDEX MATCH z IFNA / IFERROR
Jak zapewne zauważyłeś, jeśli formuła INDEX MATCH w Excelu nie może znaleźć wartości lookup, generuje błąd #N/A. Jeśli chcesz zastąpić standardową notację błędu czymś bardziej znaczącym, zawiń swoją formułę INDEX MATCH w funkcję IFNA. Na przykład:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Nie znaleziono dopasowania")
A teraz, jeśli ktoś wprowadzi tablicę lookup, która nie istnieje w zakresie lookup, formuła wyraźnie poinformuje użytkownika, że nie znaleziono dopasowania:
Jeśli chciałbyś wyłapać wszystkie błędy, nie tylko #N/A, użyj funkcji IFERROR zamiast IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, something went wrong!")
Należy pamiętać, że w wielu sytuacjach ukrycie wszystkich błędów może być nierozsądne, ponieważ ostrzegają one o możliwych błędach w twojej formule.
Oto jak używać INDEKSU i MATCH w Excelu. Mam nadzieję, że nasze przykłady formuł okażą się dla Ciebie pomocne i czekam na Ciebie na naszym blogu za tydzień!
Zeszyt ćwiczeń do pobrania
Przykłady Excel INDEX MATCH (plik .xlsx)