INDEX MATCH MATCH en Excel para a busca bidimensional

  • Comparte Isto
Michael Brown

O titorial mostra algunhas fórmulas diferentes para realizar unha busca bidimensional en Excel. Só tes que mirar as alternativas e escoller o teu favorito :)

Ao buscar algo nas túas follas de cálculo de Excel, a maioría das veces mirarías verticalmente en columnas ou horizontalmente en filas. Pero ás veces cómpre buscar nas dúas filas e columnas. Noutras palabras, pretende atopar un valor na intersección dunha determinada fila e columna. Isto chámase busca de matriz (tamén coñecido como 2-dimensional ou busca bidireccional ), e este titorial mostra como facelo de 4 formas diferentes.

    Fórmula de COINCIDENCIA DE COINCIDENCIA DE ÍNDICE de Excel

    A forma máis popular de facer unha busca bidireccional en Excel é mediante o uso de COINCIDENCIA DE ÍNDICE. Esta é unha variación da fórmula clásica INDEX MATCH á que engades unha función máis MATCH para obter os números de fila e columna:

    INDEX ( data_array, MATCH ( vlookup_value, intervalo_de_columnas_de_busca, 0), COINCIDIR ( valor de busca, intervalo_de_columnas_de_busca, 0))

    A modo de exemplo, fagamos unha fórmula para extraer unha poboación dun determinado animal nun ano determinado a partir da táboa seguinte. Para comezar, definimos todos os argumentos:

    • Matriz_datos - B2:E4 (celdas de datos, sen incluír as cabeceiras de fila e columna)
    • Vlookup_value - H1 (animal de destino)
    • Intervalo_de_columnas de busca - A2:A4 (encabezados de fila: nomes de animais) -A3:A4
    • Valor_de_busca - H2 (ano obxectivo)
    • Intervalo_de_fila de busca - B1:E1 (encabezados de columna: anos)

    Xunta todos os argumentos e obterás esta fórmula para a busca bidireccional:

    =INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))

    Como funciona esta fórmula

    Aínda que poida parecer un pouco complexa a primeira vista, a lóxica da fórmula é moi sinxela e fácil de entender. A función INDEX recupera un valor da matriz de datos en función dos números de fila e columna, e dúas funcións MATCH proporcionan eses números:

    INDEX(B2:E4, row_num, column_num)

    Aquí, aproveitamos a capacidade de MATCH(lookup_value, lookup_array, [match_type]) para devolver unha posición relativa de lookup_value en lookup_array .

    Entón, para obter o número de fila, buscamos para o animal de interese (H1) nos encabezados das filas (A2:A4):

    =SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)

    Para obter o número de columna, buscamos o ano de destino (H2) nos encabezados das columnas. (B1:E1):

    MATCH(H2, B1:E1, 0)

    En ambos os casos, buscamos a coincidencia exacta configurando o 3º argumento en 0.

    Neste exemplo, o primeiro MATCH devolve 2 porque o noso valor de busca virtual (oso polar) atópase en A3, que é a segunda cela en A2:A4. O segundo MATCH devolve 3 porque o valor de hlookup (2000) atópase en D1, que é a terceira cela en B1:E1.

    Dado o anterior, a fórmula redúcese a:

    INDEX(B2:E4, 2, 3)

    E devolve un valor na intersección da 2a fila e a 3a columna da matriz de datos B2:E4, que é unvalor na cela D3.

    Fórmula BUSCAR V e COINCIDIR para a busca bidireccional

    Outra forma de facer unha busca bidimensional en Excel é mediante unha combinación de funcións BUSCAR V e COINCIDIR:

    VLOOKUP( vlookup_value , table_array , MATCH( hlookup_value , lookup_row_range , 0), FALSE)

    Para a nosa táboa de mostra , a fórmula toma a seguinte forma:

    =VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)

    Onde:

    • Matriz_táboa - A2:E4 (celdas de datos incluíndo cabeceiras de fila)
    • Vlookup_value - H1 (animal de destino)
    • Lookup_value - H2 (ano de destino)
    • Lookup_row_range - A1:E1 (encabezados de columna: anos)

    Como funciona esta fórmula

    O núcleo da fórmula é a función BUSCAR V configurada para a coincidencia exacta (o último argumento definido como FALSO), que busca o valor de busca (H1) na primeira columna da matriz da táboa (A2:E4) e devolve un valor doutra columna da mesma fila. Para determinar de que columna devolver un valor, usa a función MATCH que tamén está configurada para a coincidencia exacta (o último argumento definido en 0):

    MATCH(H2, A1:E1, 0)

    MATCH busca o valor en H2 nos encabezados das columnas (A1:E1) e devolve a posición relativa da cela atopada. No noso caso, o ano obxectivo (2010) atópase en E1, que é o quinto na matriz de busca. Entón, o número 5 vai ao argumento col_index_num de BUSCARV:

    VLOOKUP(H1, A2:E4, 5, FALSE)

    BUSCARV tómao de alí, atopa uncoincidencia exacta para o seu valor de busca en A2 e devolve un valor da quinta columna da mesma fila, que é a cela E2.

    Nota importante! Para que a fórmula funcione correctamente, table_table (A2:E4) de BUSCAR V e matriz_de_busca de MATCH (A1:E1) deben ter o mesmo número de columnas, se non, o número pasado por MATCH a col_index_num será incorrecta (non corresponderá á posición da columna en table_array ).

    Función XLOOKUP para buscar en filas e columnas

    Recentemente Microsoft introduciu unha función máis en Excel que está destinada a substituír todas as funcións de busca existentes, como BUSCAR V, BUSCAR e COINCIDIR ÍNDICE. Entre outras cousas, BUSCAR XL pode mirar a intersección dunha fila e unha columna específicas:

    BUSCAR XL( valor_buscada , rango_columnas_buscada_v , BUSCAR XL( valor_buscada , hlookup_row_range , data_array ))

    Para o noso conxunto de datos de mostra, a fórmula é o seguinte:

    =XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))

    Nota. Actualmente BUSCAR XL é unha función beta, que só está dispoñible para os subscritores de Office 365 que formen parte do programa Office Insiders.

    Como funciona esta fórmula

    A fórmula usa a capacidade de BUSCAR XL para devolver un fila ou columna enteira. A función interna busca o ano de destino na fila de cabeceira e devolve todos os valores dese ano (neste exemplo, para o ano 1980). Eses valores van ao argumento return_array do outerXLOOKUP:

    XLOOKUP(H1, A2:A4, {22000;25000;700}))

    A función XLOOKUP externa busca o animal de destino nas cabeceiras das columnas e devolve o valor na mesma posición desde return_array.

    Fórmula SUMPRODUCT para dous -way lookup

    A función SUMPRODUCT é como un coitelo suízo en Excel: pode facer moitas cousas máis aló do seu propósito designado, especialmente cando se trata de avaliar varios criterios.

    Para buscar dous criterios, en filas e columnas, use esta fórmula xenérica:

    SUMPRODUCT( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), data_array )

    Para realizar unha busca bidireccional no noso conxunto de datos, a fórmula é a seguinte:

    =SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)

    A seguinte sintaxe tamén funcionará:

    =SUMPRODUCT((A2:A4=H1) * (B1:E1=H2) * B2:E4)

    Como funciona esta fórmula

    No corazón da fórmula, comparamos dous valores de busca cos encabezados de fila e columna (o animal obxectivo en H1 con todos os animais). nomes en A2:A4 e o ano obxectivo en H2 contra todos os anos en B1:E1):

    (A2:A4=H1) * (B1:E1=H2)

    Esta res ultas en 2 matrices de valores VERDADEIRO e FALSO, onde os VERDADEROS representan coincidencias:

    {FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}

    A operación de multiplicación forza os valores VERDADEIRO e FALSO a 1 e 0 e produce unha matriz bidimensional de 4 columnas e 3 filas (as filas están separadas por punto e coma e cada columna de datos por coma):

    {0,0,0,0;0,0,0,0;0,1,0,0}

    As funcións SUMPRODUCTO multiplican os elementos da matriz anterior polos elementos deB2:E4 nas mesmas posicións:

    {0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}

    E como multiplicar por cero dá cero, só sobrevive o elemento correspondente a 1 da primeira matriz:

    SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})

    Finalmente, SUMPRODUCT suma os elementos da matriz resultante e devolve un valor de 2000.

    Nota. Se a túa táboa ten máis dunha fila ou/e cabeceiras de columna co mesmo nome, a matriz final conterá máis dun número distinto de cero, e sumaranse todos eses números. Como resultado, obterá unha suma de valores que cumpren ambos os criterios. É o que fai que a fórmula SUMPRODUCT sexa diferente de INDEX MATCH MATCH e VLOOKUP, que devolven a primeira coincidencia atopada.

    Busca de matrices con intervalos con nome (intersección explícita)

    Unha forma máis sorprendente de facelo unha busca de matriz en Excel é mediante o uso de intervalos con nome. Así é como:

    Parte 1: Nomea columnas e filas

    A forma máis rápida de nomear cada fila e cada columna da túa táboa é esta:

    1. Seleccione toda a táboa (A1:E4 no noso caso).
    2. Na pestana Fórmulas , no grupo Nomes definidos , faga clic en Crear desde Selección ou prema o atallo Ctrl + Maiúsculas + F3.
    3. No cadro de diálogo Crear nomes desde a selección , seleccione Fila superior e Esquerda columna e prema en Aceptar.

    Isto crea automaticamente nomes baseados nas cabeceiras de fila e columna. Non obstante, hai un par de advertencias:

    • Se a túa columna e/ouAs cabeceiras de filas son números ou conteñen caracteres específicos que non están permitidos nos nomes de Excel, non se crearán os nomes de tales columnas e filas. Para ver unha lista de nomes creados, abra o Xestor de nomes ( Ctrl + F3 ). Se faltan algúns nomes, defíneos manualmente como se explica en Como nomear un intervalo en Excel.
    • Se algúns dos seus encabezados de fila ou columna conteñen espazos, os espazos substituiranse por guións baixos, por exemplo, Polar_bear .

    Para a nosa táboa de mostra, Excel creou automaticamente só os nomes das filas. Os nomes das columnas teñen que ser creados manualmente porque os encabezados das columnas son números. Para superar isto, pode simplemente prefacer os números con guións baixos, como _1990 .

    Como resultado, temos os seguintes intervalos con nome:

    Parte 2 : Fai unha fórmula de busca de matriz

    Para extraer un valor na intersección dunha fila e columna determinadas, só tes que escribir unha das seguintes fórmulas xenéricas nunha cela baleira:

    = nome_fila nome_columna

    Ou viceversa:

    = nome_columna nome_fila

    Por exemplo, para obter a poboación de baleas azuis en 1990 , a fórmula é tan sinxela como:

    =Blue_whale _1990

    Se alguén precisa instrucións máis detalladas, os seguintes pasos guiarache a través do proceso:

    1. Nunha cela onde queres que apareza o resultado, escribe o signo de igualdade (=).
    2. Comeza a escribir o nome da fila de destino, por exemplo, Balea_azul . Despoisescribiches un par de caracteres, Excel mostrará todos os nomes existentes que coincidan coa túa entrada. Fai dobre clic no nome desexado para introducilo na túa fórmula:
    3. Despois do nome da fila, escribe un espazo , que funciona como o operador de intersección en neste caso.
    4. Introduza o nome da columna de destino ( _1990 no noso caso).
    5. En canto se introduzan os nomes das filas e das columnas, Excel resaltará a fila e columna correspondentes na súa táboa e preme Intro para completar a fórmula:

    Remata a túa busca na matriz e a captura de pantalla que aparece a continuación mostra o resultado:

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

    Descargas dispoñibles

    Libro de traballo de exemplo de busca bidimensional

    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.