Taula de continguts
Aquest tutorial mostra com utilitzar INDEX i MATCH a Excel i com és millor que VLOOKUP.
En un parell d'articles recents, vam fer un bon esforç per explicar els conceptes bàsics de la funció BUSCAR V als principiants i oferir exemples de fórmules BUSCAR V més complexes per als usuaris avançats. I ara, intentaré, si no per evitar-vos que utilitzeu BUSCARV, almenys us mostraré una manera alternativa de fer una cerca vertical a Excel.
"Per a què ho necessito?" us podeu preguntar. Perquè VLOOKUP té nombroses limitacions que poden impedir que obtingueu el resultat desitjat en moltes situacions. D'altra banda, la combinació INDEX MATCH és més flexible i té moltes característiques increïbles que la fan superior a VLOOKUP en molts aspectes.
Excel INDEX i funcions MATCH: conceptes bàsics
Com que l'objectiu d'aquest tutorial és demostrar una forma alternativa de fer una cerca virtual a Excel mitjançant una combinació de funcions INDEX i MATCH, no ens detenem gaire en la seva sintaxi i usos. Cobrirem només el mínim necessari per entendre la idea general i després aprofundirem en exemples de fórmules que revelen tots els avantatges d'utilitzar INDEX MATCH en lloc de VLOOKUP.
Funció INDEX: sintaxi i ús
La funció INDEX d'Excel retorna un valor en una matriu en funció dels números de fila i columna que especifiqueu. La sintaxi de la funció INDEX és senzilla:
( criteri1= interval1) * ( criteri2= interval2), 0))}Nota. Aquesta és una fórmula de matriu que s'ha de completar amb la drecera Ctrl + Maj + Retorn.
A la taula de mostra següent, suposant que voleu trobar l'import en funció de dos criteris, Client i Producte .
La fórmula INDEX MATCH següent funciona com un plaer:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
On C2:C10 és l'interval des del qual retornar un valor, F1 és el criteri1, A2:A10 és l'interval que cal comparar amb el criteri1, F2 és el criteri 2 i B2:B10 és l'interval que cal comparar amb el criteri 2.
Recordeu introduir la fórmula correctament prement Ctrl + Maj + Retorn. , i l'Excel l'inclourà automàticament entre claudàtors tal com es mostra a la captura de pantalla:
Si preferiu no utilitzar fórmules de matriu als vostres fulls de treball, afegiu una funció més INDEX a la fórmula i completeu-la amb un cop d'entrada habitual:
Com funcionen aquestes fórmules
Les fórmules utilitzen el mateix enfocament que la funció bàsica INDEX MATCH que examina una sola columna. Per avaluar diversos criteris, creeu dues o més matrius de valors VERDADERS i FALS que representen coincidències i no coincidències per a cada criteri individual i, a continuació, multipliqueu els elements corresponents d'aquestes matrius. L'operació de multiplicació converteix TRUE i FALSE en 1 i 0, respectivament, i produeix una matriu on els 1 corresponen a files que coincideixen amb tots els criteris.La funció MATCH amb un valor de cerca 1 troba el primer "1" de la matriu i passa la seva posició a INDEX, que retorna un valor en aquesta fila des de la columna especificada.
La fórmula no matriu es basa en la capacitat de la funció INDEX de gestionar matrius de manera nativa. El segon INDEX es configura amb 0 row_num de manera que passarà tota la matriu de columnes a MATCH.
Aquesta és una explicació d'alt nivell de la lògica de la fórmula. Per obtenir tots els detalls, consulteu Excel INDEX MATCH amb diversos criteris.
Excel INDEX MATCH amb MITJANA, MAX, MIN
Microsoft Excel té funcions especials per trobar un valor mínim, màxim i mitjà en un rang. Però, què passa si necessiteu obtenir un valor d'una altra cel·la associada amb aquests valors? En aquest cas, utilitzeu la funció MAX, MIN o AVERAGE juntament amb INDEX MATCH.
INDEX MATCH amb MAX
Per trobar el valor més gran a la columna D i retornar un valor de la columna C al mateixa fila, utilitzeu aquesta fórmula:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH amb MIN
Per localitzar el valor més petit a la columna D i treure un valor associat de la columna C, feu servir aquest :
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEX MATCH amb MITJANA
Per calcular el valor més proper a la mitjana a D2:D10 i obtenir el valor corresponent de la columna C, aquesta és la fórmula utilitzar:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
Depenent de com estiguin organitzades les vostres dades, proporcioneu 1 o -1 al tercer argument (match_type) dela funció MATCH:
- Si la vostra columna de cerca (en el nostre cas, la columna D) està ordenada ascendent , poseu 1. La fórmula calcularà el valor més gran que sigui menys. superior a o igual al valor mitjà.
- Si la columna de cerca s'ordena decreixent , introduïu -1. La fórmula calcularà el valor més petit que sigui superior a o igual al valor mitjà.
- Si la matriu de cerca conté un valor exactament igual a a la mitjana, pot introduir 0 per a la coincidència exacta. No cal ordenar.
Al nostre exemple, les poblacions de la columna D s'ordenen en ordre descendent, de manera que utilitzem -1 per al tipus de concordança. Com a resultat, obtenim "Tòquio" ja que la seva població (13.189.000) és la coincidència més propera que és superior a la mitjana (12.269.006).
Potser us interessa saber que VLOOKUP també pot realitzar aquests càlculs, però com a fórmula de matriu: VLOOKUP amb AVERAGE, MAX, MIN.
Utilitzar INDEX MATCH amb IFNA / IFERROR
Com probablement heu notat, si un INDEX MATCH La fórmula a Excel no pot trobar un valor de cerca, produeix un error #N/A. Si voleu substituir la notació d'error estàndard per alguna cosa més significativa, embolcalleu la vostra fórmula INDEX MATCH a la funció IFNA. Per exemple:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "No match is found")
I ara, si algú introdueix una taula de cerca que no existeix a l'interval de cerca, la fórmula informarà explícitament a l'usuari que no hi ha cap coincidència.trobat:
Si voleu detectar tots els errors, no només #N/A, utilitzeu la funció IFERROR en comptes d'IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, something went wrong!")
Tingueu en compte que en moltes situacions pot ser imprudent dissimular tots els errors perquè us alerten sobre possibles errors a la vostra fórmula.
Així és com s'utilitza INDEX i MATCH a Excel. Espero que els nostres exemples de fórmules us siguin útils i esperem veure-us al nostre bloc la setmana vinent!
Quader de pràctiques per descarregar
Excel INDEX MATCH (fitxer .xlsx)
INDEX(array, row_num, [column_num])Aquí hi ha una explicació molt senzilla de cada paràmetre:
- array : un interval de cel·les que voleu retornar un value from.
- row_num - el número de fila de la matriu des del qual voleu retornar un valor. Si s'omet, és obligatori el column_num.
- column_num - el número de columna de la matriu des del qual voleu retornar un valor. Si s'omet, row_num és obligatori.
Per obtenir més informació, vegeu la funció INDEX d'Excel.
I aquí teniu un exemple de la fórmula INDEX en la seva forma més senzilla:
=INDEX(A1:C10,2,3)
La fórmula cerca a les cel·les A1 a C10 i retorna un valor de la cel·la de la 2a fila i la 3a columna, és a dir, la cel·la C2.
Molt fàcil, oi? Tanmateix, quan treballeu amb dades reals, gairebé mai no sabríeu quina fila i columna voleu, és aquí on la funció COINCORDA és útil.
Funció COINCIDENT: sintaxi i ús
La funció COINCORDA d'Excel cerca un valor de cerca en un rang de cel·les i retorna la posició relativa d'aquest valor a l'interval.
La sintaxi de la funció COINCORDA és la següent:
COINCORDA(valor_cerca , lookup_array, [match_type])- lookup_value : el número o el valor de text que esteu cercant.
- lookup_array : un interval de cel·les cercat.
- match_type - especifica si s'ha de tornar una coincidència exacta o la més propera:
- 1 o s'ha omès: troba el valor més gran que és menor o igual que el valor de cerca. Requereix ordenar la matriu de cerca en ordre ascendent.
- 0: troba el primer valor que és exactament igual al valor de cerca. A la combinació INDEX / MATCH, gairebé sempre necessiteu una coincidència exacta, de manera que establiu el tercer argument de la vostra funció MATCH a 0.
- -1: troba el valor més petit que és més gran o igual que cerca_valor. Requereix ordenar la matriu de cerca en ordre descendent.
Per exemple, si l'interval B1:B3 conté els valors "Nova York", "París", "Londres", la fórmula següent retorna el número 3, perquè "Londres" és la tercera entrada de l'interval:
=MATCH("London",B1:B3,0)
Per obtenir més informació, vegeu la funció COINCIDENT d'Excel.
A A primera vista, la utilitat de la funció MATCH pot semblar qüestionable. A qui li importa la posició d'un valor en un rang? El que sí que volem saber és el valor en si.
Permeteu-me que us recordi que la posició relativa del valor de cerca (és a dir, els números de fila i columna) és exactament el que heu de proporcionar a row_num i núm_columna de la funció INDEX. Com recordeu, Excel INDEX pot trobar el valor a la unió d'una fila i una columna determinades, però no pot determinar quina fila i columna exactament voleu.
Com utilitzar la funció INDEX MATCH a Excel
Ara que coneixeu els fonaments bàsics, crec que síja va començar a tenir sentit com MATCH i INDEX funcionen junts. En poques paraules, INDEX troba el valor de cerca per números de columna i fila, i MATCH proporciona aquests números. Això és tot!
Per a la cerca vertical, utilitzeu la funció COINCORD només per determinar el número de fila i proporcionar l'interval de columnes directament a INDEX:
INDEX ( columna per retornar un valor de, COINCIDENT ( valor de cerca, columna per comparar, 0))Encara tens dificultats per esbrinar-ho? Pot ser que sigui més fàcil d'entendre a partir d'un exemple. Suposem que teniu una llista de capitals nacionals i la seva població:
Per trobar la població d'una determinada capital, per exemple, la capital del Japó, utilitzeu la següent fórmula de concordança d'índexs:
=INDEX(C2:C10, MATCH("Japan", A2:A10, 0))
Ara, analitzem què fa realment cada component d'aquesta fórmula:
- La funció MATCH cerca el valor de cerca "Japó" a l'interval A2: A10, i retorna el número 3, perquè "Japó" és el tercer a la matriu de cerca.
- El número de fila va directament a l'argument núm_fila d'INDEX que li indica que retorni un valor d'aquest. fila.
Per tant, la fórmula anterior es converteix en un ÍNDEX simple (C2:C,3) que diu que cal cercar a les cel·les C2 a C10 i extreure el valor de la tercera cel·la d'aquest interval, és a dir. C4 perquè comencem a comptar des de la segona fila.
No voleu codificar la ciutat a la fórmula? Introduïu-lo en alguna cel·la, per exemple F1, proveïu la cel·lareferència a MATCH i obtindreu una fórmula de cerca dinàmica:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Nota important! El nombre de files al L'argument array d'INDEX hauria de coincidir amb el nombre de files de l'argument lookup_array de MATCH, en cas contrari la fórmula produirà un resultat incorrecte.
Espereu, espereu... per què no No utilitzem simplement la següent fórmula de Vlookup? Quin sentit té perdre el temps intentant esbrinar els girs arcanics d'Excel MATCH INDEX?
=VLOOKUP(F1, A2:C10, 3, FALSE)
En aquest cas, no té cap sentit :) Aquest senzill exemple només té finalitats de demostració, perquè tingueu una idea de com funcionen conjuntament les funcions INDEX i MATCH. Altres exemples que es mostren a continuació us mostraran el poder real d'aquesta combinació que s'enfronta fàcilment a molts escenaris complexos quan ensopega BUSCAR V.
Consells:
- A Excel 365 i Excel 2021, podeu pot utilitzar una fórmula INDEX XMATCH més moderna.
- Per a Google Sheets, vegeu exemples de fórmules amb INDEX MATCH en aquest article.
INDEX MATCH vs. VLOOKUP
Quan Per decidir quina funció utilitzar per a les cerques verticals, la majoria dels gurus d'Excel estan d'acord que INDEX MATCH és molt millor que VLOOKUP. Tanmateix, moltes persones encara es mantenen amb BUSCARV, en primer lloc, perquè és més senzill i, en segon lloc, perquè no entenen completament tots els avantatges d'utilitzar la fórmula INDEX MATCH a Excel. Sense aquesta comprensió ningú està disposat a invertir el seu temps per aprendreuna sintaxi més complexa.
A continuació, assenyalaré els avantatges clau de MATCH INDEX respecte a VLOOKUP, i tu decideixes si és una addició digna al teu arsenal d'Excel.
4 raons principals per utilitzar-la. INDEX MATCH en lloc de VLOOKUP
- Cerca de dreta a esquerra. Com qualsevol usuari educat sap, VLOOKUP no pot mirar a la seva esquerra, és a dir, el valor de cerca sempre hauria de residir a la columna més esquerra de la taula. INDEX MATCH pot fer una cerca a l'esquerra amb facilitat! L'exemple següent ho mostra en acció: Com cercar un valor a l'esquerra a Excel.
- Inseriu o suprimiu columnes de manera segura. Les fórmules BUSCAR V es trenquen o ofereixen resultats incorrectes quan es fa una columna nova. s'ha suprimit o afegit a una taula de cerca perquè la sintaxi de VLOOKUP requereix especificar el número d'índex de la columna de la qual voleu extreure les dades. Naturalment, quan afegiu o suprimiu columnes, el número d'índex canvia.
Amb INDEX MATCH, especifiqueu l'interval de la columna de retorn, no un número d'índex. Com a resultat, podeu inserir i eliminar tantes columnes com vulgueu sense preocupar-vos d'actualitzar totes les fórmules associades.
- Sense límit per a la mida d'un valor de cerca. Quan utilitzeu la funció BUSCARV, la longitud total dels vostres criteris de cerca no pot superar els 255 caràcters, en cas contrari, acabareu tenint el #VALOR ! error. Per tant, si el vostre conjunt de dades conté cadenes llargues, INDEX MATCH és l'únic que funcionasolució.
- Major velocitat de processament. Si les taules són relativament petites, gairebé no hi haurà cap diferència significativa en el rendiment d'Excel. Però si els vostres fulls de treball contenen centenars o milers de files i, per tant, centenars o milers de fórmules, MATCH INDEX funcionarà molt més ràpid que VLOOKUP perquè Excel haurà de processar només les columnes de cerca i retorn en lloc de tota la matriu de la taula.
L'impacte de BUSCARV en el rendiment d'Excel pot ser especialment notable si el vostre llibre de treball conté fórmules de matriu complexes com BUSCARV i SUMA. La qüestió és que comprovar cada valor de la matriu requereix una crida independent de la funció BUSCARV. Per tant, com més valors contingui la vostra matriu i com més fórmules de matriu tingueu en un llibre de treball, més lent serà el rendiment d'Excel.
Excel INDEX MATCH: exemples de fórmules
Conèixer el raons per aprendre la funció ÍNDEX DE COINCORDACIÓ, anem a la part més interessant i veiem com podeu aplicar els coneixements teòrics a la pràctica.
Fórmula de COINCIDENCIAL ÍNDICE per buscar de dreta a esquerra
Com ja s'ha esmentat, VLOOKUP no pot mirar cap a l'esquerra. Per tant, tret que els vostres valors de cerca siguin la columna més esquerra, no hi ha cap possibilitat que una fórmula Vlookup us doni el resultat que voleu. La funció INDEX MATCH d'Excel és més versàtil i realment no li importa on es troben les columnes de cerca i de retorn.
Per a aquest exemple,afegirem la columna Classificació a l'esquerra de la nostra taula de mostra i intentarem esbrinar com es classifica la capital russa, Moscou, en termes de població.
Amb el valor de cerca a G1, utilitzeu la fórmula següent per cercar a C2:C10 i retorneu un valor corresponent de A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Consell. Si teniu previst utilitzar la vostra fórmula INDEX MATCH per a més d'una cel·la, assegureu-vos de bloquejar els dos intervals amb referències de cel·les absolutes (com ara $A$2:$A$10 i $C$2:4C$10) perquè no es distorsionin quan copiant la fórmula.
INDEX MATCH MATCH per cercar en files i columnes
En els exemples anteriors, hem utilitzat INDEX MATCH com a reemplaçament de la clàssica CERCA V per retornar un valor d'una columna predefinida rang. Però, què passa si necessiteu buscar en diverses files i columnes? En altres paraules, què passa si voleu realitzar l'anomenada cerca matriu o bidireccional ?
Això pot semblar complicat, però la fórmula és molt semblant a la funció bàsica d'INDEX MATCH d'Excel, amb només una diferència. Endevineu què?
Simplement, utilitzeu dues funcions MATCH: una per obtenir un número de fila i l'altra per obtenir un número de columna. I felicito a aquells que heu encertat :)
INDEX (matriu, COINCIDENCIA ( valor de cerca de v, columna per buscar, 0), COINCIDENT ( valor de cerca, fila per buscar, 0))I ara, si us plau, fes una ullada a la taula següent i creem una coincidència d'índex.fórmula per trobar la població (en milions) en un país determinat durant un any determinat.
Amb el país objectiu a G1 (valor de cerca de v) i l'any objectiu a G2 (valor de cerca de h), la fórmula pren aquesta forma :
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Com funciona aquesta fórmula
Sempre que necessiteu entendre una fórmula complexa d'Excel, descomponeu-la en parts més petites i vegeu què fa cada funció individual:
MATCH(G1,A2:A11,0)
: cerca a través de A2:A11 el valor de la cel·la G1 ("Xina") i retorna la seva posició, que és 2.
MATCH(G2,B1:D1,0))
: cerca a través B1:D1 per obtenir la posició del valor a la cel·la G2 ("2015"), que és 3.
Els números de fila i columna anteriors van als arguments corresponents de la funció INDEX:
INDEX(B2:D11, 2, 3)
Com a resultat, obteniu un valor a la intersecció de la 2a fila i la 3a columna a l'interval B2:D11, que és el valor de la cel·la D3. Fàcil? Sí!
Coincidència d'índex d'Excel per cercar diversos criteris
Si vau tenir l'oportunitat de llegir el nostre tutorial de BUSCAR V d'Excel, és probable que ja hàgiu provat una fórmula per a cercar amb diversos criteris. Tanmateix, una limitació significativa d'aquest enfocament és la necessitat d'afegir una columna d'ajuda. La bona notícia és que la funció INDEX MATCH d'Excel també pot buscar amb dos o més criteris, sense modificar ni reestructurar les dades d'origen!
Aquí teniu la fórmula genèrica INDEX MATCH amb diversos criteris:
{=INDEX( interval_retorn, COINCIDENT(1,