VLOOKUP avançada a Excel: múltiple, doble, imbricat

  • Comparteix Això
Michael Brown

Aquests exemples us ensenyaran com cercar diversos criteris, retornar una instància específica o totes les coincidències, fer una cerca virtual dinàmica en diversos fulls i molt més.

És la segona part de la sèrie que us ajudarà a aprofitar el poder d'Excel VLOOKUP. Els exemples impliquen que sabeu com funciona aquesta funció. Si no, és raonable començar amb els usos bàsics de BUSCAR V a Excel.

Abans d'avançar, permeteu-me que us recordi breument la sintaxi:

BUSCARV(valor_cerca, matriu_taula, num_índex_col, [cerca_interval] )

Ara que tothom està a la mateixa pàgina, mirem més de prop els exemples avançats de la fórmula BUSCAR V:

    Com cercar diversos criteris

    Excel La funció VLOOKUP és molt útil quan es tracta de cercar un valor determinat en una base de dades. Tanmateix, no té una característica important: la seva sintaxi només permet un valor de cerca. Però, què passa si voleu mirar cap amunt amb diverses condicions? Hi ha algunes solucions diferents per triar.

    Fórmula 1. CERCA V amb dos criteris

    Suposem que teniu una llista de comandes i voleu trobar la quantitat en funció de 2 criteris, Nom del client i Producte . Un factor complicat és que cada client va demanar diversos productes, tal com es mostra a la taula següent:

    Una fórmula de BUSCAR VOLTA habitual no funcionarà en aquesta situació perquè retorna el primer trobat. coincidència basada en aregions:

    Com a l'exemple anterior, comencem per definir alguns noms:

    • L'interval A2:B5 al full CA s'anomena CA_Sales .
    • El rang A2:B5 al full FL s'anomena FL_Sales .
    • El rang A2:B5 al full KS s'anomena KS_Sales .

    Com podeu veure, tots els rangs anomenats tenen una part comuna ( Vendes ) i parts úniques ( CA , FL , KS ). Assegureu-vos d'anomenar els vostres intervals d'una manera similar, ja que és essencial per a la fórmula que construirem.

    Fórmula 1. CERCA V INDIRECTA per extreure dinàmicament dades de diferents fulls

    Si la vostra tasca és recuperar dades de diversos fulls, una fórmula INDIRECTA VLOOKUP és la millor solució: compacta i fàcil d'entendre.

    Per a aquest exemple, organitzem la taula resum d'aquesta manera:

    • Introduïu els productes d'interès a A2 i A3. Aquests són els nostres valors de cerca.
    • Introduïu les parts úniques dels intervals amb nom a B1, C1 i D1.

    I ara, concatenem la cel·la que conté la part única (B1) amb la part comuna ("_Sales") i introduïu la cadena resultant a INDIRECT:

    INDIRECT(B$1&"_Sales")

    La funció INDIRECTA transforma la cadena en un nom que Excel pot entendre i la poseu a l'argument table_array de VLOOKUP:

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

    La fórmula anterior va a B2 i després la copieu cap avall i cap a la dreta.

    Si us plau. Fixeu-vos que, en el valor de cerca ($A2),hem bloquejat la coordenada de la columna amb una referència de cel·la absoluta perquè la columna es mantingui fixa quan es copia la fórmula a la dreta. A la referència B$1, hem bloquejat la fila perquè volem que la coordenada de la columna canviï i proporcioni una part de nom adequada a INDIRECTA en funció de la columna a la qual es copia la fórmula:

    Si la vostra taula principal està organitzada de manera diferent, els valors de cerca en una fila i les parts úniques dels noms d'interval en una columna, haureu de bloquejar la coordenada de la fila al valor de cerca (B $ 1) i la coordenada de la columna a les parts del nom ($A2):

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

    Fórmula 2. BUSCAR V i FI imbricats per cercar diversos fulls

    En situació en què teniu només dos o tres fulls de cerca, podeu utilitzar una fórmula BUSCAR V bastant senzilla amb funcions SI imbricades per seleccionar el full correcte en funció del valor clau d'una cel·la concreta:

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

    On $A2 és el valor de cerca (nom de l'element) i B$1 és el valor de la clau (estat):

    En aquest cas, no cal definir noms i podeu utilitzar referències per referir-se a un altre full o llibre de treball.

    Per a més fórmula exa Si us plau, vegeu Com fer BUSCAR V en diversos fulls a Excel.

    Així és com s'utilitza BUSCAR V a Excel. Us agraeixo la lectura i esperem veure-us al nostre bloc la setmana vinent!

    Quader de pràctiques per descarregar

    Exemples de fórmules de CERCA V avançada (.xlsxfitxer)

    valor de cerca únic que especifiqueu.

    Per superar-ho, podeu afegir-hi una columna d'ajuda i concatenar els valors de dues columnes de cerca ( Client i Producte ). És important que la columna d'ajuda sigui la columna extrema a l'esquerra de la matriu de la taula perquè és on Excel VLOOKUP sempre cerca el valor de cerca.

    Per tant, afegiu una columna a l'esquerra del vostre taula i copieu la fórmula següent a través d'aquesta columna. Això omplirà la columna d'ajuda amb els valors de les columnes B i C (el caràcter d'espai es concatena entremig per a una millor llegibilitat):

    =B2&" "&C2

    I després, utilitzeu una fórmula i col·loqueu VLOOKUP estàndard. tots dos criteris a l'argument lookup_value , separats amb un espai:

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

    O bé, introduïu els criteris en cel·les separades (G1 i G2 en el nostre cas) i concatenar-los cel·les:

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

    Com que volem retornar un valor de la columna D, que és la quarta a la matriu de la taula, fem servir 4 per a col_index_num . L'argument range_lookup s'estableix en FALSE per buscar una coincidència exacta. La captura de pantalla següent mostra el resultat:

    En cas que la vostra taula de cerca estigui en un altre full , incloeu el nom del full a la vostra fórmula BUSCAR V. Per exemple:

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

    Com a alternativa, creeu un interval amb nom per a la taula de cerca (per exemple, Comandes ) per facilitar la lectura de la fórmula:

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

    Per obtenir més informació, vegeu Com fer-hoCerca des d'un altre full a Excel.

    Nota. Perquè la fórmula funcioni correctament, els valors de la columna d'ajuda s'han de concatenar exactament de la mateixa manera que a l'argument lookup_value . Per exemple, hem utilitzat un caràcter d'espai per separar els criteris tant a la columna d'ajuda (B2&" "&C2) com a la fórmula BUSCAR V (G1&" "&G2).

    Fórmula 2. BUSCAR V d'Excel amb múltiples condicions

    En teoria, podeu utilitzar l'enfocament anterior per a la cerca V amb més de dos criteris. Tanmateix, hi ha un parell d'advertències. En primer lloc, un valor de cerca està limitat a 255 caràcters i, en segon lloc, és possible que el disseny del full de treball no permeti afegir una columna d'ajuda.

    Afortunadament, Microsoft Excel sovint ofereix més d'una manera de fer el mateix. Per cercar diversos criteris, podeu utilitzar una combinació INDEX MATCH o la funció XLOOKUP introduïda recentment a Office 365.

    Per exemple, per cercar basant-se en 3 valors diferents ( Data , Nom del client i Producte ), utilitzeu una de les fórmules següents:

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

    On:

    • G1 és el criteri 1 (data)
    • G2 és el criteri 2 (nom del client)
    • G3 és el criteri 3 (producte)
    • A2:A11 és la cerca rang 1 (dates)
    • B2:B11 és l'interval de cerca 2 (noms dels clients)
    • C2:C11 és rang de cerca 3 (productes)
    • D2:D11 és el retorn rang (quantitat)

    Nota. En totes les versions excepte Excel 365, INDEXMATCH s'ha d'introduir com a fórmula de matriu CSE prement Ctrl + Maj + Retorn. A Excel 365 que admet matrius dinàmiques, també funciona com una fórmula normal.

    Per a l'explicació detallada de les fórmules, vegeu:

    • XLOOKUP amb diversos criteris
    • Fórmula INDEX MATCH amb diversos criteris

    Com utilitzeu BUSCAR V per obtenir la 2a, 3a o enèima coincidència

    Com ja sabeu, Excel VLOOKUP només pot obtenir un valor coincident, més precisament, retorna la primera coincidència trobada. Però, què passa si hi ha diverses coincidències a la matriu de cerca i voleu obtenir la segona o la tercera instància? La tasca sona força complexa, però la solució existeix!

    Fórmula 1. Vlookup Enèima instància

    Suposem que tens noms de clients en una columna, els productes que han comprat en una altra i estàs buscant per trobar el 2n o 3r producte comprat per un client determinat.

    La manera més senzilla és afegir una columna d'ajuda a l'esquerra de la taula com vam fer al primer exemple. Però aquesta vegada, l'omplirem amb noms de clients i números d'ocurrència com " John Doe1 ", " John Doe2 ", etc.

    Per obtenir l'ocurrència, utilitzeu la funció COUNTIF amb una referència d'interval mixt (la primera referència és absoluta i la segona relativa com $B$2:B2). Com que la referència relativa canvia en funció d'una posició de la cel·la on es copia la fórmula, a la fila 3 es convertirà en $B$2:B3, a la fila 4 -$B$2:B4, i així successivament.

    Concatenat amb el nom del client (B2), la fórmula pren aquesta forma:

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

    La fórmula anterior passa a A2 , i després el copieu a tantes cel·les com sigui necessari.

    Després, introduïu el nom de destinació i el número d'ocurrència en cel·les separades (F1 i F2) i utilitzeu la fórmula següent per buscar una ocurrència específica:

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

    Fórmula 2. Segona ocurrència de Vlookup

    Si busqueu la segona instància del valor de cerca, podeu prescindir de la columna auxiliar. En lloc d'això, creeu la matriu de la taula de manera dinàmica utilitzant la funció INDIRECTA juntament amb MATCH:

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

    On:

    • E1 és el valor de cerca
    • A2:A11 és l'interval de cerca
    • B11 és l'última cel·la (a la part inferior dreta) de la taula de cerca

    Tingueu en compte que La fórmula anterior s'escriu per a un cas específic en què les cel·les de dades de la taula de cerca comencen a la fila 2. Si la vostra taula es troba en algun lloc del mig del full, utilitzeu aquesta fórmula universal, on A1 és la cel·la superior esquerra de la taula de cerca que conté una capçalera de columna:

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

    Com funciona aquesta fórmula

    Aquí hi ha la part clau de la fórmula que crea un interval de cerca dinàmica :

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

    La funció MATCH configurada per a la coincidència exacta (0 a l'últim argument) compara el nom de destinació (E1) amb la llista de noms (A2:A11) i retorna la posició del primer trobat. coincidència, que és 3en el nostre cas. Aquest número s'utilitzarà com a coordenada de fila inicial per a l'interval de cerca de v, de manera que li afegim 2 (+1 per excloure la primera instància i +1 per excloure la fila 1 amb les capçaleres de columna). Alternativament, podeu utilitzar 1+ROW(A1) per calcular automàticament l'ajust necessari en funció de la posició de la fila de capçalera (A1 en el nostre cas).

    Com a resultat, obtenim la següent cadena de text, que INDIRECTA es converteix en una referència d'interval:

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

    Aquest interval passa a l'argument table_array de BUSCARV, forçant-lo a començar a cercar a la fila 5, deixant de banda la primera instància de el valor de cerca:

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

    Com cercar i retornar diversos valors a Excel

    La funció BUSCAR V d'Excel està dissenyada per retornar només una coincidència. Hi ha alguna manera de cercar múltiples instàncies? Sí, n'hi ha, encara que no és fàcil. Això requereix l'ús combinat de diverses funcions, com ara INDEX, SMALL i ROW és una fórmula matricial.

    Per exemple, el següent pot trobar totes les ocurrències del valor de cerca F2 a l'interval de cerca B2:B16 i retornar múltiples coincideix amb la columna C:

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

    Hi ha dues maneres d'introduir la fórmula al vostre full de treball:

    1. Escriviu la fórmula a la primera cel·la, premeu Ctrl + Maj + Retorn i arrossegueu-lo cap avall fins a unes quantes cel·les més.
    2. Seleccioneu diverses cel·les adjacents en una sola columna (F1:F11 a la captura de pantalla següent), escriviu la fórmula i premeu Ctrl +Maj + Retorn per completar-lo.

    De qualsevol manera, el nombre de cel·les en què introduïu la fórmula hauria de ser igual o superior al nombre màxim de coincidències possibles.

    Per obtenir una explicació detallada de la lògica de la fórmula i més exemples, vegeu Com cercar diversos valors a Excel.

    Com fer una cerca virtual en files i columnes (cerca bidireccional)

    Recerca bidireccional (també coneguda com cerca de matriu o cerca bidimensional ) és una paraula fantàstica per buscar un valor a la intersecció de una determinada fila i columna. Hi ha algunes maneres diferents de fer cerques bidimensionals a Excel, però com que l'enfocament d'aquest tutorial és la funció BUSCAR V, l'utilitzarem naturalment.

    Per a aquest exemple, prendrem el següent. taula amb vendes mensuals i elaboreu una fórmula VLOOKUP per recuperar la xifra de vendes d'un article específic en un mes determinat.

    Amb noms d'articles a A2:A9, noms de mesos a B1:F1, l'article objectiu a I1 i el mes objectiu a I2, la fórmula és el següent:

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

    Com funciona aquesta fórmula

    El nucli de la fórmula és la funció VLOOKUP estàndard que cerca una coincidència exacta amb el valor de cerca a I1. Però com que no sabem en quina columna exactament es troben les vendes d'un mes concret, no podem proporcionar el número de columna directament a l'argument col_index_num . Per trobar aquesta columna, fem servir el següent MATCHfunction:

    MATCH(I2, A1:F1, 0)

    Traduït a l'anglès, la fórmula diu: cerqueu el valor I2 a A1:F1 i retorneu la seva posició relativa a la matriu. En proporcionar 0 al tercer argument, indiqueu a MATCH que trobi el valor exactament igual al valor de cerca (és com utilitzar FALSE per a l'argument range_lookup de BUSCARV).

    Des de Mar es troba a la quarta columna de la matriu de cerca, la funció MATCH retorna 4, que va directament a l'argument col_index_num de VLOOKUP:

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

    Si us plau. Fixeu-vos que encara que els noms dels mesos comencen a la columna B, utilitzem A1:I1 per a la matriu de cerca. Això es fa per tal que el número retornat per MATCH correspongui a la posició de la columna a table_array de VLOOKUP.

    Per obtenir més informació sobre com fer una cerca de matriu a Excel, vegeu INDEX MATCH MATCH i altres fórmules per a la cerca bidimensional.

    Com fer múltiples Vlookup a Excel (Vlookup imbricat)

    De vegades pot passar que la vostra taula principal i la vostra taula de cerca no tinguin una sola columna a comuna, que impedeix fer una cerca V entre dues taules. Tanmateix, hi ha una altra taula, que no conté la informació que esteu cercant, però té una columna comuna amb la taula principal i una altra columna comuna amb la taula de cerca.

    A la imatge de sota il·lustra la situació:

    L'objectiu és copiar els preus a la taula principal en funció de Identificadors d'elements . El problema és que la taula que conté els preus no té els ID d'article , és a dir, haurem de fer dues cerques virtuals en una fórmula.

    Per comoditat, creem un parell de primer els rangs anomenats:

    • La taula de cerca 1 s'anomena Productes (D3:E10)
    • La taula de cerca 2 s'anomena Preus ( G3:H10 )

    Les taules poden estar en els mateixos fulls de treball o en diferents.

    I ara, realitzarem l'anomenada doble Vlookup , també conegut com a Vlookup imbricat .

    Primer, feu una fórmula VLOOKUP per trobar el nom del producte a la taula de cerca 1 (anomenada Productes ) en funció de l'article id (A3):

    =VLOOKUP(A3, Products, 2, FALSE)

    A continuació, poseu la fórmula anterior a l'argument lookup_value d'una altra funció VLOOKUP per extreure preus de la taula de cerca 2 (anomenada ). Preus ) segons el nom del producte retornat per la VLOOKUP imbricada:

    =VLOOKUP(VLOOKUP(A3, Products, 2, FALSE), Prices, 2, FALSE)

    La captura de pantalla següent mostra la nostra fórmula de Vlookup imbricada en acció:

    Com cercar diversos fulls de manera dinàmica

    De vegades, y És possible que tingueu dades en el mateix format dividides en diversos fulls de treball. I el vostre objectiu és extreure dades d'un full específic en funció del valor clau d'una cel·la determinada.

    Això pot ser més fàcil d'entendre a partir d'un exemple. Suposem que teniu uns quants informes de vendes regionals en el mateix format i voleu obtenir les xifres de vendes d'un producte específic en determinats

    Michael Brown és un entusiasta de la tecnologia dedicat amb una passió per simplificar processos complexos mitjançant eines de programari. Amb més d'una dècada d'experiència en la indústria tecnològica, ha perfeccionat les seves habilitats en Microsoft Excel i Outlook, així com en Google Sheets i Docs. El bloc de Michael es dedica a compartir els seus coneixements i experiència amb altres persones, oferint consells i tutorials fàcils de seguir per millorar la productivitat i l'eficiència. Tant si sou un professional experimentat com si sou un principiant, el bloc de Michael ofereix valuoses idees i consells pràctics per treure el màxim profit d'aquestes eines de programari essencials.