BUSCAR V en varias follas en Excel con exemplos

  • Comparte Isto
Michael Brown

O titorial mostra como usar a función BUSCAR V para copiar datos doutra folla de traballo ou libro de traballo, Busca V en varias follas e buscar de forma dinámica para devolver valores de diferentes follas a diferentes celas.

Ao buscar información en Excel, é un caso raro cando todos os datos están na mesma folla. Máis a miúdo, terás que buscar en varias follas ou incluso en diferentes libros de traballo. A boa noticia é que Microsoft Excel ofrece máis dunha forma de facelo, e a mala noticia é que todas as formas son un pouco máis complicadas que unha fórmula VLOOKUP estándar. Pero con só un pouco de paciencia, descubrirémolos :)

    Como BUSCAR V entre dúas follas

    Para comezar, investiguemos un caso máis sinxelo: usar BUSCAR V para copiar datos doutra folla de traballo. É moi semellante a unha fórmula VLOOKUP normal que busca na mesma folla de traballo. A diferenza é que inclúe o nome da folla no argumento table_array para indicarlle á súa fórmula en que folla de traballo se atopa o intervalo de busca.

    A fórmula xenérica para BUSCAR V desde outra folla é a seguinte:

    BUSCARV(valor_busca, Folla!intervalo, núm_índice_col, [buscada_intervalo])

    A modo de exemplo, imos extraer as cifras de vendas do informe xan ao Resumo folla. Para iso, definimos os seguintes argumentos:

    • Lookup_values están na columna A da folla Resumo eBUSCAR V:

      VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)

      Finalmente, esta fórmula estándar de BUSCAR V busca o valor A2 na primeira columna do rango A2:C6 na folla Oeste e devolve un coincidencia da 2a columna. Isto é todo!

      BUSCAR V dinámico para devolver datos de varias follas a diferentes celas

      En primeiro lugar, imos definir o que significa exactamente a palabra "dinámico" neste contexto e como vai ser esta fórmula diferente dos anteriores.

      No caso de que teñas grandes anacos de datos no mesmo formato que se dividen en varias follas de cálculo, pode querer extraer información de diferentes follas en diferentes celas. A imaxe de abaixo ilustra o concepto:

      A diferenza das fórmulas anteriores que recuperaban un valor dunha folla específica baseándose nun identificador único, esta vez buscamos extraer valores de varias follas ao mesmo tempo. tempo.

      Hai dúas solucións diferentes para esta tarefa. En ambos os casos, cómpre facer un pequeno traballo preparatorio e crear intervalos con nome para as celas de datos en cada folla de busca. Para este exemplo, definimos os seguintes intervalos:

      • Vendas_leste - A2:B6 na folla Leste
      • Vendas_norte - A2: B6 na folla norte
      • South_Sales - A2:B6 na folla sur
      • West_Sales - A2:B6 na folla oeste

      BUSCAR V e IF anidados

      Se tes un número razoable de follas para buscar, podes usar funcións IF aniñadaspara seleccionar a folla en función das palabras clave das celas predefinidas (no noso caso as celas B1 a D1).

      Co valor de busca en A2, a fórmula é a seguinte:

      =VLOOKUP($A2, IF(B$1="east", East_Sales, IF(B$1="north", North_Sales, IF(B$1="south", South_Sales, IF(B$1="west", West_Sales)))), 2, FALSE)

      Traducido ao inglés, a parte IF di:

      Se B1 é Este , busque no intervalo chamado East_Sales ; se B1 é Norte , busque no intervalo chamado Norte_Vendas ; se B1 é Sur , busque no intervalo chamado South_Sales ; e se B1 é Oeste , busque no intervalo chamado Vendas_Oeste .

      O intervalo devolto por IF vai a matriz_tabla de BUSCARV, que tira un valor coincidente da segunda columna da folla correspondente.

      O uso intelixente de referencias mixtas para o valor de busca ($A2 - columna absoluta e fila relativa) e a proba lóxica de IF (B$1 - columna relativa) e fila absoluta) permite copiar a fórmula noutras celas sen ningún cambio - Excel axusta as referencias automaticamente en función da posición relativa dunha fila e columna.

      Entón, introducimos a fórmula en B2, cópiaa correctamente e ata tantas columnas e filas como sexa necesario e obteña o seguinte resultado:

      BUSCAR VINDIRECTA

      Ao traballar con moitas follas, varios niveis aniñados tamén poden facer que a fórmula longo e difícil de ler. Unha forma moito mellor é crear un intervalo de busca dinámica dinámica coa axuda de INDIRECTO:

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

      Aquí, concatenamos a referencia á cela que contén unparte única do rango nomeado (B1) e a parte común (_Vendas). Isto produce unha cadea de texto como "East_Sales", que INDIRECTO converte no nome do intervalo comprensible por Excel.

      Como resultado, obtén unha fórmula compacta que funciona moi ben en calquera número de follas:

      Así é como buscar entre follas e ficheiros en Excel. Grazas por ler e espero verte no noso blog a vindeira semana!

      Caderno de prácticas para descargar

      Buscar exemplos de varias follas (ficheiro .xlsx)

      consulte a primeira cela de datos, que é A2.
    • Matriz_táboa é o intervalo A2:B6 na folla de xaneiro. Para referirse a ela, prefixa a referencia do intervalo co nome da folla seguido do signo de exclamación: Xan!$A$2:$B$6.

      Preste atención a que bloqueamos o intervalo con referencias de cela absolutas para evitar que cambie ao copiar a fórmula noutras celas.

      Col_index_num é 2 porque queremos copiar un valor da columna B, que é a segunda columna da matriz da táboa.

    • Range_lookup configúrase en FALSE para buscar unha coincidencia exacta.

    Xuntando os argumentos, obtemos esta fórmula:

    =VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)

    Arrastra a fórmula pola columna e obterás este resultado:

    Nunha de xeito similar, pode buscar datos das follas Feb e Mar :

    =VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)

    =VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)

    Consellos e notas:

    • Se o nome da folla contén espazos ou caracteres non alfabéticos , debe ir entre comiñas simples, como 'Vendas de xaneiro'!$A$2:$B$6 . Para obter máis información, consulte Como facer referencia a outra folla en Excel.
    • En lugar de escribir o nome dunha folla directamente nunha fórmula, pode cambiar á folla de traballo de busca e seleccionar alí o intervalo. Excel inserirá automaticamente unha referencia coa sintaxe correcta, evitandoche problemas para comprobar o nome e solucionar problemas.

    Buscar V desde un libro de traballo diferente

    Para BUSCAR V entre douslibros de traballo, inclúa o nome do ficheiro entre corchetes, seguido do nome da folla e do signo de exclamación.

    Por exemplo, para buscar o valor A2 no intervalo A2:B6 na folla Xan en no libro de traballo Sales_reports.xlsx , use esta fórmula:

    =VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)

    Para obter máis información, consulte BUSCAR V desde outro libro de traballo en Excel.

    Buscar V en todo o varias follas con IFERROR

    Cando precisa buscar entre máis de dúas follas, a solución máis sinxela é usar BUSCARV en combinación con IFERROR. A idea é aniñar varias funcións IFERROR para comprobar varias follas de traballo unha por unha: se a primeira BUSCAR V non atopa unha coincidencia na primeira folla, busque na seguinte folla, etc.

    IFERROR(BUSCARV(…), IFERROR(BUSCARV(…), …, " Non atopado "))

    Para ver como funciona este enfoque en datos da vida real, consideremos o seguinte exemplo. A continuación móstrase a táboa Resumo que queremos encher cos nomes e importes dos artigos buscando o número de pedido nas follas Oeste e Este :

    Primeiro, imos tirar os elementos. Para iso, instruímoslle á fórmula BUSCAR V para buscar o número de orde en A2 na folla Este e devolver o valor da columna B (2ª columna en table_array A2:C6). Se non se atopa unha coincidencia exacta, busque na folla Oeste . Se fallan ambas as consultas virtuales, devolve "Non atopado".

    =IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))

    Para devolver o importe,simplemente cambie o número de índice da columna a 3:

    =IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))

    Consello. Se é necesario, pode especificar matrices de táboas diferentes para diferentes funcións de BUSCAR V. Neste exemplo, ambas as follas de busca teñen o mesmo número de filas (A2:C6), pero as súas follas de traballo poden ter un tamaño diferente.

    Búsqueda virtual en varios libros de traballo

    Para realizar unha búsqueda virtual entre dous ou máis libros de traballo, pon o nome do libro de traballo entre corchetes e colócao antes do nome da folla. Por exemplo, vexa como podes buscar en dous ficheiros diferentes ( Libro1 e Libro2 ) cunha única fórmula:

    =IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE),"Not found"))

    Facer dinámico o número de índice de columna para Vlookup varias columnas

    En situacións na que necesites devolver datos de varias columnas, facer que col_index_num dinámico podería aforrarche tempo. Hai que facer un par de axustes:

    • Para o argumento col_index_num , use a función COLUMNS que devolve o número de columnas nunha matriz especificada: COLUMNS($A$1 : B$1). (A coordenada da fila non importa realmente, pode ser unha fila calquera.)
    • No argumento lookup_value , bloquee a referencia da columna co signo $ ($A2), polo que permanece solucionouse ao copiar a fórmula noutras columnas.

    Como resultado, obtén unha especie de fórmula dinámica que extrae valores coincidentes de diferentes columnas, dependendo da columna na que se copie a fórmula:

    =IFERROR(VLOOKUP($A2, East!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), IFERROR(VLOOKUP($A2, West!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), "Not found"))

    Cando se introduce na columna B, COLUMNAS($A$1:B$1)avalía a 2 dicindo a VLOOKUP que devolva un valor da segunda columna da matriz da táboa.

    Cando se copia na columna C (é dicir, arrastrou a fórmula de B2 a C2), B$1 cambia a C$1 porque a referencia da columna é relativa. En consecuencia, COLUMNS($A$1:C$1) avalíase a 3 obrigando a BUSCARV a devolver un valor da 3a columna.

    Esta fórmula funciona moi ben para 2 ou 3 follas de busca. Se tes máis, os IFERROR repetitivos vólvense demasiado engorrosos. O seguinte exemplo demostra un enfoque un pouco máis complicado pero moito máis elegante.

    Buscar varias follas con INDIRECTO

    Unha forma máis de buscar entre varias follas en Excel é usar unha combinación de BUSCAR V e Funcións INDIRECTAS. Este método require un pouco de preparación, pero ao final, terás unha fórmula máis compacta para a Busca V en calquera número de follas de cálculo.

    Unha fórmula xenérica para a Busca V en follas é a seguinte:

    BUSCAR V( valor_busca , INDIRECTO("'"&INDEX( Follas_busca , MATCH(1, --(CONTARSE(INDIRECT("'" & Follas_busca & ") '! intervalo_de_busca "), valor_de_busca )>0), 0)) & "'! matriz_de_táboa "), número_índice_col , FALSO)

    Onde:

    • Follas_de_busca : un intervalo denominado que consiste nos nomes das follas de busca.
    • Valor_de_busca : o valor para buscar.
    • Intervalo_de_busca : o intervalo de columnas nas follas de busca onde buscar a buscavalor.
    • Matriz_táboa : o intervalo de datos nas follas de busca.
    • Núm_índice_Col : o número da columna da matriz da táboa desde a que devolve un valor.

    Para que a fórmula funcione correctamente, teña en conta as seguintes advertencias:

    • É unha fórmula matricial, que debe completarse premendo Ctrl + As teclas Maiús + Intro xuntos.
    • Todas as follas deben ter a a mesma orde de columnas .
    • Como usamos unha matriz de táboa para todas as follas de busca, especifique o intervalo máis amplo se as túas follas teñen un número diferente de filas.

    Como usar a fórmula para buscar varias follas á vez

    Para buscar varias follas á vez, realiza estes pasos pasos:

    1. Anota todos os nomes das follas de busca nalgún lugar do teu libro de traballo e nomea ese intervalo ( Follas_de_busca no noso caso).

  • Axuste a fórmula xenérica para os seus datos. Neste exemplo, estaremos:
    • buscando o valor A2 ( lookup_value )
    • no intervalo A2:A6 ( lookup_range ) en catro follas de traballo ( Este , Norte , Sur e Oeste ) e
    • sacan os valores coincidentes da columna B, que é a columna 2 ( col_index_num ) no intervalo de datos A2:C6 ( table_array ).

    Cos argumentos anteriores, a fórmula toma esta forma:

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)

    Teña en conta que bloqueamos ambos intervalos ($A$2:$A$6 e $A$2:$C$6) con referencias de cela absolutas.

  • Introduza o fórmulana cela máis alta (B2 neste exemplo) e prema Ctrl + Maiús + Intro para completala.
  • Fai dobre clic ou arrastre o controlador de recheo para copiar a fórmula na columna.
  • Como resultado, temos a fórmula para buscar o número de pedido en 4 follas e recuperar o elemento correspondente. Se non se atopa un número de pedido específico, móstrase un erro #N/A como na fila 14:

    Para devolver o importe, simplemente substitúa 2 por 3 no col_index_num xa que as cantidades están na terceira columna da matriz da táboa:

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE)

    Se desexa substituír a notación de erro estándar #N/A polo seu propio texto, encaixe a fórmula na función IFNA:

    =IFNA(VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE), "Not found")

    Buscar varias follas entre libros de traballo

    Esta fórmula xenérica (ou calquera variación) tamén se pode usar para buscar varias follas nun libro de traballo diferente . Para iso, concatene o nome do libro de traballo dentro de INDIRECTO como se mostra na seguinte fórmula:

    =IFNA(VLOOKUP($A2, INDIRECT("'[Book1.xlsx]" & INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'[Book1.xlsx]" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 2, FALSE), "Not found")

    Busca entre follas e devolve varias columnas

    Se queres extraer datos de varias columnas, unha fórmula de matriz de varias celas pode facelo dunha soa vez. Para crear tal fórmula, proporcione unha constante de matriz para o argumento col_index_num .

    Neste exemplo, queremos devolver os nomes dos elementos (columna B) e as cantidades (columna C), que son a 2a e a 3a columna da matriz da táboa, respectivamente. Entón, a matriz necesaria é{2,3}.

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets &"'!$A$2:$C$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), {2,3}, FALSE)

    Para introducir correctamente a fórmula en varias celas, isto é o que cómpre facer:

    • Na primeira fila, seleccione todas as celas a encher (B2:C2 no noso exemplo).
    • Escriba a fórmula e prema Ctrl + Maiús + Intro . Introdúcese a mesma fórmula nas celas seleccionadas, que devolverá un valor diferente en cada columna.
    • Arrastre a fórmula ata as filas restantes.

    Como funciona esta fórmula

    Para comprender mellor a lóxica, desglosamos esta fórmula básica nas funcións individuais:

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)

    Traballando desde dentro para fóra, isto é o que fai a fórmula:

    CONTARSE e INDIRECTO

    En poucas palabras, INDIRECTO constrúe as referencias para todas as follas de busca e CONTAR SE conta as ocorrencias da busca valor (A2) en cada folla:

    --(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)

    Con máis detalle:

    Primeiro, concatena o nome do intervalo (Lookup_sheets) e a referencia do intervalo ($A$2: $A$6), engadindo apóstrofos e o signo de exclamación nos lugares correctos para facer unha referencia externa e alimentar a cadea de texto resultante á función INDIRECTA para facer referencia dinámica ás follas de busca:

    INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})

    CONTARSE comproba cada cela no intervalo A2:A6 de cada folla de busca co valor de A2 na principal folla e devolve o reconto de coincidencias para cada folla. No noso conxunto de datos, o número de orde en A2 (101) atópase na folla Oeste , que é o cuartorango nomeado, polo que COUNTIF devolve esta matriz:

    {0;0;0;1}

    A continuación, compara cada elemento da matriz anterior con 0:

    --({0; 0; 0; 1}>0)

    Isto produce unha matriz de valores VERDADEIRO (maior que 0) e FALSO (igual a 0), que coaccionas a 1 e 0 usando un dobre unario (--) e obtén como resultado a seguinte matriz:

    {0; 0; 0; 1}

    Esta operación é unha precaución adicional para xestionar unha situación na que unha folla de busca contén varias ocorrencias do valor de busca, nese caso COUNTIF devolvería un reconto superior a 1, mentres que queremos só 1 e 0 no matriz final (nun momento entenderás por que).

    Despois de todas estas transformacións, a nosa fórmula ten o seguinte aspecto:

    VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)

    INDEX and MATCH

    Neste punto, unha combinación clásica de COINCIDENCIA DE ÍNDICE pasa a:

    INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))

    A función COINCIDENCIAR configurada para a coincidencia exacta (0 no último argumento) busca o valor 1 na matriz { 0;0;0;1} e devolve a súa posición, que é 4:

    INDEX(Lookup_sheets, 4)

    A función INDEX usa o número devolto por MATCH como argumento do número de fila (núm_fila) e devolve o cuarto valor no intervalo denominado Follas_de_busca , que é Oeste .

    Entón, a fórmula reduce aínda máis a:

    VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)

    VLOOKUP e INDIRECTO

    A función INDIRECTA procesa a cadea de texto dentro dela:

    INDIRECT("'"&"West"&"'!$A$2:$C$6")

    E convértea nunha referencia que vai ao argumento table_array de

    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.