VLOOKUP avanzado en Excel: múltiple, dobre, aniñado

  • Comparte Isto
Michael Brown

Estes exemplos ensinaránche a buscar varios criterios, devolver unha instancia específica ou todas as coincidencias, facer unha búsqueda dinámica en varias follas e moito máis.

É a segunda parte de a serie que che axudará a aproveitar o poder de Excel VLOOKUP. Os exemplos implican que sabe como funciona esta función. Se non é así, é razoable comezar cos usos básicos de BUSCAR V en Excel.

Antes de avanzar, permíteme lembrarche brevemente a sintaxe:

BUSCARV(valor_busca, matriz_táboa, num_índice_col, [buscada_rango] )

Agora que todos están na mesma páxina, vexamos máis de cerca os exemplos de fórmulas avanzadas de BUSCAR V:

    Como buscar varios criterios

    O Excel A función VLOOKUP é moi útil cando se trata de buscar un valor determinado nunha base de datos. Non obstante, carece dunha característica importante: a súa sintaxe permite só un valor de busca. Pero e se queres buscar con varias condicións? Hai algunhas solucións diferentes entre as que podes escoller.

    Fórmula 1. BUSCAR V con dous criterios

    Supoña que tes unha lista de pedidos e queres atopar a cantidade en función de 2 criterios, Nome do cliente e Produto . Un factor complicado é que cada cliente pediu varios produtos, como se mostra na seguinte táboa:

    Unha fórmula habitual de BUSCAR VOLTA non funcionará nesta situación porque devolve o primeiro atopado. coincidencia baseada en arexións:

    Como no exemplo anterior, comezamos por definir algúns nomes:

    • O rango A2:B5 na folla CA chámase CA_Sales .
    • O rango A2:B5 na folla FL chámase FL_Sales .
    • O rango A2:B5 na folla KS chámase KS_Sales .

    Como podes ver, todos os intervalos nomeados teñen unha parte común ( Vendas ) e partes únicas ( CA , FL , KS ). Asegúrate de nomear os teus intervalos dun xeito similar, xa que é esencial para a fórmula que imos crear.

    Fórmula 1. BUSCAR V INDIRECTA para extraer dinámicamente datos de diferentes follas

    Se a túa tarefa é recuperar datos de varias follas, unha fórmula INDIRECTA VLOOKUP é a mellor solución: compacta e fácil de entender.

    Para este exemplo, organizamos a táboa de resumo deste xeito:

    • Introduza os produtos de interese en A2 e A3. Eses son os nosos valores de busca.
    • Introduza as partes únicas dos intervalos nomeados en B1, C1 e D1.

    E agora, concatenamos a cela que contén a parte única (B1) coa parte común ("_Sales"), e alimenta a cadea resultante a INDIRECTO:

    INDIRECT(B$1&"_Sales")

    A función INDIRECTA transforma a cadea nun nome que Excel pode entender e póñase en o argumento table_array de BUSCAR V:

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

    A fórmula anterior vai a B2 e despois cópiaa cara abaixo e á dereita.

    Por favor preste atención a que, no valor de busca ($A2),bloqueamos a coordenada da columna cunha referencia de cela absoluta para que a columna permaneza fixa cando se copie a fórmula á dereita. Na referencia B$1, bloqueamos a fila porque queremos que a coordenada da columna cambie e proporcione unha parte do nome apropiada a INDIRECTO dependendo da columna na que se copie a fórmula:

    Se a súa táboa principal está organizada de forma diferente, os valores de busca nunha fila e as partes únicas dos nomes do intervalo nunha columna, entón debería bloquear a coordenada da fila no valor de busca (B $ 1) e a coordenada da columna nas partes do nome. ($A2):

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

    Fórmula 2. BUSCAR V e IF anidados para buscar varias follas

    Na situación na que ten só dúas ou tres follas de busca, podes usar unha fórmula BUSCAR V bastante sinxela con funcións IF aniñadas para seleccionar a folla correcta en función do valor clave nunha cela determinada:

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

    Onde $A2 é o valor de busca (nome do elemento) e B$1 é o valor da clave (estado):

    Neste caso, non precisa definir nomes e pode utilizar referencias para referirse a outra folla ou caderno de traballo.

    Para máis fórmulas exa mples, consulte Como BUSCAR V en varias follas en Excel.

    Así é como usar BUSCAR V en Excel. Grazas por ler e espero verte no noso blog a próxima semana!

    Practica para descargar

    Exemplos de fórmulas de BUSCAR V Avanzado (.xlsxficheiro)

    valor de busca único que especifique.

    Para superar isto, pode engadir alí unha columna auxiliar e concatenar os valores de dúas columnas de busca ( Cliente e Produto ). É importante que a columna auxiliar sexa a columna máis á esquerda da matriz da táboa porque é onde BUSCAR V de Excel sempre busca o valor de busca.

    Entón, engade unha columna á esquerda da túa táboa. táboa e copie a seguinte fórmula nesa columna. Isto encherá a columna auxiliar cos valores das columnas B e C (o carácter espazo está concatenado no medio para unha mellor lexibilidade):

    =B2&" "&C2

    E, a continuación, use unha fórmula estándar de BUSCAR V ambos os criterios no argumento valor_busca , separados cun espazo:

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

    Ou, introduza os criterios en celas separadas (G1 e G2 no noso caso) e concatene aqueles celas:

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

    Como queremos devolver un valor da columna D, que é o cuarto da matriz da táboa, usamos 4 para col_index_num . O argumento range_lookup establécese como FALSE para buscar unha coincidencia exacta. A seguinte captura de pantalla mostra o resultado:

    No caso de que a túa táboa de busca estea en outra folla , inclúa o nome da folla na túa fórmula de BUSCAR V. Por exemplo:

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

    Como alternativa, cree un intervalo con nome para a táboa de busca (por exemplo, Pedidos ) para que a fórmula sexa máis fácil de ler:

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

    Para obter máis información, consulte Como facerBusca desde outra folla en Excel.

    Nota. Para que a fórmula funcione correctamente, os valores da columna auxiliar deben concatenar exactamente do mesmo xeito que no argumento lookup_value . Por exemplo, usamos un carácter espazo para separar os criterios tanto na columna auxiliar (B2&" "&C2) como na fórmula BUSCAR V (G1&" "&G2).

    Fórmula 2. BUSCAR V de Excel con varias condicións

    En teoría, podes usar o enfoque anterior para a Busca V para máis de dous criterios. Non obstante, hai un par de advertencias. En primeiro lugar, un valor de busca está limitado a 255 caracteres e, en segundo lugar, é posible que o deseño da folla de traballo non permita engadir unha columna auxiliar.

    Por sorte, Microsoft Excel adoita ofrecer máis dunha forma de facer o mesmo. Para buscar varios criterios, podes usar unha combinación de COINCIDENCIA DE ÍNDICE ou a función BUSCAR XL introducida recentemente en Office 365.

    Por exemplo, para buscar en función de 3 valores diferentes ( Data , Nome do cliente e Produto ), use unha das seguintes fórmulas:

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

    Onde:

    • G1 é o criterio 1 (data)
    • G2 é o criterio 2 (nome do cliente)
    • G3 é o criterio 3 (produto)
    • A2:A11 é a busca intervalo 1 (datas)
    • B2:B11 é intervalo de busca 2 (nomes de clientes)
    • C2:C11 é intervalo de busca 3 (produtos)
    • D2:D11 é a devolución rango (cantidade)

    Nota. En todas as versións excepto Excel 365, INDEXMATCH debe introducirse como fórmula de matriz CSE premendo Ctrl + Maiús + Intro. En Excel 365 que admite matrices dinámicas, tamén funciona como unha fórmula normal.

    Para a explicación detallada das fórmulas, consulte:

    • XLOOKUP con varios criterios
    • INDEX MATCH fórmula con varios criterios

    Como use BUSCAR V para obter a segunda, terceira ou enésima coincidencia

    Como xa sabe, Excel VLOOKUP só pode buscar un valor coincidente, máis precisamente, devolve a primeira coincidencia atopada. Pero que pasa se hai varias coincidencias na matriz de busca e queres obter a segunda ou terceira instancia? A tarefa soa bastante complicada, pero a solución existe!

    Fórmula 1. Vlookup Nth instance

    Supoña que tes os nomes de clientes nunha columna, os produtos que compraron noutra e que estás a buscar para atopar o 2o ou 3o produto comprado por un determinado cliente.

    O xeito máis sinxelo é engadir unha columna auxiliar á esquerda da táboa como fixemos no primeiro exemplo. Pero esta vez, encherémolo con nomes de clientes e números de ocorrencias como " John Doe1 ", " John Doe2 ", etc.

    Para obter a aparición, use a función COUNTIF cunha referencia de rango mixto (a primeira referencia é absoluta e a segunda relativa como $B$2:B2). Dado que a referencia relativa cambia en función da posición da cela onde se copia a fórmula, na fila 3 converterase en $B$2:B3, na fila 4 -$B$2:B4 e así por diante.

    Concatenada co nome do cliente (B2), a fórmula toma esta forma:

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

    A fórmula anterior vai a A2 , e despois cópiao en tantas celas como sexa necesario.

    Despois diso, introduza o nome de destino e o número de aparición en celas separadas (F1 e F2) e use a fórmula a continuación para buscar unha ocorrencia específica:

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

    Fórmula 2. Segunda aparición de Vlookup

    Se está a buscar a segunda instancia do valor de busca, pode prescindir da columna auxiliar. En vez diso, cree a matriz da táboa de forma dinámica usando a función INDIRECTA xunto con MATCH:

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

    Onde:

    • E1 é o valor de busca
    • A2:A11 é o intervalo de busca
    • B11 é a última cela (inferior dereita) da táboa de busca

    Teña en conta que o a fórmula anterior está escrita para un caso específico onde as celas de datos da táboa de busca comezan na fila 2. Se a túa táboa está nalgún lugar no medio da folla, utiliza esta fórmula universal, onde A1 é a cela superior esquerda da táboa de busca que contén un encabezado de columna:

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

    Como funciona esta fórmula

    Aquí está a parte clave da fórmula que crea un intervalo de busca dinámica dinámica :

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

    A función MATCH configurada para a coincidencia exacta (0 no último argumento) compara o nome de destino (E1) coa lista de nomes (A2:A11) e devolve a posición do primeiro atopado. coinciden, que é 3no noso caso. Este número vai ser usado como a coordenada da fila inicial para o intervalo de busca v, polo que lle engadimos 2 (+1 para excluír a primeira instancia e +1 para excluír a fila 1 coas cabeceiras das columnas). Alternativamente, pode usar 1+ROW(A1) para calcular automaticamente o axuste necesario en función da posición da fila de cabeceira (A1 no noso caso).

    Como resultado, obtemos a seguinte cadea de texto, que INDIRECTO convértese nunha referencia de intervalo:

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

    Este intervalo vai ao argumento table_array de BUSCARV o que o obriga a comezar a buscar na fila 5, deixando fóra a primeira instancia de o valor de busca:

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

    Como buscar e devolver varios valores en Excel

    A función BUSCAR V de Excel está deseñada para devolver só unha coincidencia. Hai algún xeito de buscar varias instancias? Si, hai, aínda que non é fácil. Isto require un uso combinado de varias funcións como INDEX, SMALL e ROW é unha fórmula matricial.

    Por exemplo, a seguinte pode atopar todas as ocorrencias do valor de busca F2 no intervalo de busca B2:B16 e devolver varias coincidentes da columna C:

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

    Hai 2 formas de introducir a fórmula na túa folla de traballo:

    1. Escriba a fórmula na primeira cela, prema Ctrl + Maiús + Intro e arrástrao cara abaixo ata algunhas celas máis.
    2. Seleccione varias celas adxacentes nunha soa columna (F1:F11 na captura de pantalla de abaixo), escriba a fórmula e prema Ctrl +Maiús + Intro para completalo.

    De calquera xeito, o número de celas nas que introduce a fórmula debe ser igual ou superior ao número máximo de coincidencias posibles.

    Para obter unha explicación detallada da lóxica da fórmula e máis exemplos, consulte Como buscar varios valores en Excel.

    Como buscar en filas e columnas (busca bidireccional)

    Busca bidireccional (tamén coñecido como busca de matriz ou busca bidimensional ) é unha palabra elegante para buscar un valor na intersección de unha determinada fila e columna. Existen algunhas formas diferentes de facer a busca en dúas dimensións en Excel, pero como o foco deste titorial está na función BUSCAR V, naturalmente usarémola.

    Para este exemplo, tomaremos o seguinte. táboa coas vendas mensuais e elabora unha fórmula VLOOKUP para recuperar a cifra de vendas dun artigo específico nun mes determinado.

    Con nomes de artigos en A2:A9, nomes de meses en B1:F1, o artigo de destino en I1. e o mes obxectivo en I2, a fórmula é o seguinte:

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

    Como funciona esta fórmula

    O núcleo da fórmula é a función BUSCAR V estándar que busca unha coincidencia exacta co valor de busca en I1. Pero como non sabemos en que columna están exactamente as vendas dun mes específico, non podemos proporcionar o número de columna directamente ao argumento col_index_num . Para atopar esa columna, usamos o seguinte MATCHfunción:

    MATCH(I2, A1:F1, 0)

    Traducido ao inglés, a fórmula di: busque o valor I2 en A1:F1 e devolva a súa posición relativa na matriz. Ao proporcionar 0 ao terceiro argumento, indicas a MATCH que atope o valor exactamente igual ao valor de busca (é como usar FALSE para o argumento range_lookup de BUSCARV).

    Xa que Mar está na cuarta columna da matriz de busca, a función MATCH devolve 4, que vai directamente ao argumento col_index_num de BUSCAR V:

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

    Por favor preste atención a que aínda que os nomes dos meses comezan na columna B, usamos A1:I1 para a matriz de busca. Isto faise para que o número devolto por MATCH se corresponda coa posición da columna en table_array de VLOOKUP.

    Para saber máis formas de realizar a busca de matriz en Excel, consulte INDEX MATCH MATCH e outras fórmulas para a busca bidimensional.

    Como facer varias Vlookup en Excel (Vlookup anidada)

    Ás veces pode ocorrer que a súa táboa principal e a súa táboa de busca non teñan unha soa columna en común, o que lle impide facer unha Vlookup entre dúas táboas. Non obstante, existe outra táboa, que non contén a información que está a buscar, pero ten unha columna común coa táboa principal e outra columna común coa táboa de busca.

    Na imaxe de abaixo ilustra a situación:

    O obxectivo é copiar os prezos na táboa principal en función de ID de elementos . O problema é que a táboa que contén os prezos non ten os ID de artigos , o que significa que teremos que facer dúas consultas virtuales nunha soa fórmula.

    Por comodidade, creemos un par de rangos nomeados primeiro:

    • A táboa de busca 1 chámase Produtos (D3:E10)
    • A táboa de busca 2 chámase Prezos ( G3:H10 )

    As táboas poden estar na mesma ou en follas de traballo diferentes.

    E agora, realizaremos a chamada Doble Vlookup , tamén coñecido como Anidado Vlookup .

    Primeiro, fai unha fórmula VLOOKUP para atopar o nome do produto na táboa de busca 1 (chamada Produtos ) en función do elemento id (A3):

    =VLOOKUP(A3, Products, 2, FALSE)

    A continuación, coloque a fórmula anterior no argumento lookup_value doutra función VLOOKUP para extraer os prezos da táboa de busca 2 (chamada Prezos ) en función do nome do produto devolto polo VLOOKUP anidado:

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

    A seguinte captura de pantalla mostra a nosa fórmula Vlookup anidada en acción:

    Como buscar varias follas de forma dinámica

    Ás veces, y Pode ter datos no mesmo formato divididos en varias follas de traballo. E o teu obxectivo é extraer datos dunha folla específica dependendo do valor da chave nunha determinada cela.

    Isto pode ser máis fácil de entender a partir dun exemplo. Digamos que tes algúns informes de vendas rexionais no mesmo formato e queres obter as cifras de vendas dun produto específico en determinados

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.