INDEX MATCH en Excel para la búsqueda bidimensional

  • Compartir Este
Michael Brown

El tutorial muestra algunas fórmulas diferentes para realizar búsquedas bidimensionales en Excel. Eche un vistazo a las alternativas y elija su favorita :)

Al buscar algo en las hojas de cálculo de Excel, la mayoría de las veces se busca verticalmente en las columnas u horizontalmente en las filas. Pero a veces es necesario buscar tanto en las filas como en las columnas. En otras palabras, el objetivo es encontrar un valor en la intersección de una fila y una columna determinadas. Esto se denomina búsqueda de matrices (alias 2 dimensiones o Búsqueda bidireccional ), y este tutorial muestra cómo hacerlo de 4 maneras diferentes.

    Fórmula de Excel INDEX MATCH

    La forma más popular de realizar una búsqueda bidireccional en Excel es mediante la función INDEX MATCH. Se trata de una variación de la fórmula clásica INDEX MATCH a la que se añade una función MATCH más para obtener tanto los números de fila como los de columna:

    ÍNDICE ( matriz_de_datos , MATCH ( vlookup_value , buscar_rango_columnas , 0), MATCH ( valor hlookup , buscar_rango_de_fila , 0))

    Como ejemplo, hagamos una fórmula para sacar de la tabla siguiente la población de un determinado animal en un año dado. Para empezar, definimos todos los argumentos:

    • Matriz_datos - B2:E4 (celdas de datos, sin incluir los encabezados de fila y columna)
    • Vlookup_value - H1 (animal objetivo)
    • Búsqueda_rango_columnas - A2:A4 (cabeceras de fila: nombres de animales) - A3:A4
    • Hlookup_value - H2 (año objetivo)
    • Buscar_rango_de_fila - B1:E1 (cabeceras de columna: años)

    Junta todos los argumentos y obtendrás esta fórmula para la búsqueda bidireccional:

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

    Cómo funciona esta fórmula

    Aunque a primera vista pueda parecer un poco compleja, la lógica de la fórmula es realmente sencilla y fácil de entender. La función INDEX recupera un valor de la matriz de datos basándose en los números de fila y columna, y dos funciones MATCH suministran esos números:

    INDEX(B2:E4, fila_num, columna_num)

    En este caso, aprovechamos la capacidad de MATCH(valor_de_consulta, matriz_de_consulta, [tipo_de_concordancia]) para devolver un valor posición relativa de buscar_valor en matriz_de_busqueda .

    Así, para obtener el número de fila, buscamos el animal de interés (H1) a través de las cabeceras de fila (A2:A4):

    MATCH(H1, A2:A4, 0)

    Para obtener el número de columna, buscamos el año objetivo (H2) a través de las cabeceras de columna (B1:E1):

    MATCH(H2, B1:E1, 0)

    En ambos casos, buscamos la coincidencia exacta poniendo el 3er argumento a 0.

    En este ejemplo, el primer MATCH devuelve 2 porque nuestro valor vlookup (Oso polar) se encuentra en A3, que es la 2ª celda de A2:A4. El segundo MATCH devuelve 3 porque el valor hlookup (2000) se encuentra en D1, que es la 3ª celda de B1:E1.

    Dado lo anterior, la fórmula se reduce a:

    INDEX(B2:E4, 2, 3)

    Y devuelve un valor en la intersección de la 2ª fila y la 3ª columna de la matriz de datos B2:E4, que es un valor en la celda D3.

    Fórmula VLOOKUP y MATCH para búsqueda bidireccional

    Otra forma de realizar una búsqueda bidimensional en Excel es utilizando una combinación de las funciones VLOOKUP y MATCH:

    VLOOKUP( vlookup_value , tabla_array , MATCH( hlookup_value , buscar_rango_de_fila , 0), FALSE)

    Para nuestra tabla de muestra, la fórmula adopta la forma siguiente:

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

    Dónde:

    • Tabla_array - A2:E4 (celdas de datos, incluidas las cabeceras de fila)
    • Vlookup_value - H1 (animal objetivo)
    • Hlookup_value - H2 (año objetivo)
    • Buscar_rango_de_fila - A1:E1 (cabeceras de columna: años)

    Cómo funciona esta fórmula

    El núcleo de la fórmula es la función VLOOKUP configurada para coincidencia exacta (el último argumento se establece en FALSE), que busca el valor de búsqueda (H1) en la primera columna de la matriz de la tabla (A2:E4) y devuelve un valor de otra columna de la misma fila. Para determinar de qué columna devolver un valor, se utiliza la función MATCH que también está configurada para coincidencia exacta (el último argumento se establece en 0):

    MATCH(H2, A1:E1, 0)

    MATCH busca el valor en H2 a través de las cabeceras de las columnas (A1:E1) y devuelve la posición relativa de la celda encontrada. En nuestro caso, el año de destino (2010) se encuentra en E1, que es el 5º en la matriz de búsqueda. Por lo tanto, el número 5 va a la celda col_index_num argumento de VLOOKUP:

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

    VLOOKUP lo toma de ahí, encuentra una coincidencia exacta para su valor de búsqueda en A2 y devuelve un valor de la 5ª columna de la misma fila, que es la celda E2.

    Nota importante: para que la fórmula funcione correctamente, tabla_array (A2:E4) de VLOOKUP y matriz_de_busqueda de MATCH (A1:E1) debe tener el mismo número de columnas, de lo contrario el número pasado por MATCH a col_index_num será incorrecta (no corresponderá a la posición de la columna en tabla_array ).

    Función XLOOKUP para buscar en filas y columnas

    Recientemente, Microsoft ha introducido una función más en Excel que pretende sustituir a todas las funciones de búsqueda existentes, como VLOOKUP, HLOOKUP e INDEX MATCH. Entre otras cosas, XLOOKUP puede buscar la intersección de una fila y una columna concretas:

    XLOOKUP( vlookup_value , vlookup_column_range XLOOKUP( hlookup_value , hlookup_row_range , matriz_de_datos ))

    Para nuestro conjunto de datos de muestra, la fórmula es la siguiente:

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

    Nota. Actualmente XLOOKUP es una función beta, que sólo está disponible para los suscriptores de Office 365 que forman parte del programa Office Insiders.

    Cómo funciona esta fórmula

    La fórmula utiliza la capacidad de XLOOKUP para devolver una fila o columna completa. La función interna busca el año de destino en la fila de cabecera y devuelve todos los valores para ese año (en este ejemplo, para el año 1980). Esos valores van a la fila matriz_de_devolución del XLOOKUP externo:

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

    La función XLOOKUP externa busca el animal de destino a través de las cabeceras de columna y devuelve el valor en la misma posición de la matriz_de_retorno.

    Fórmula SUMPRODUCT para búsqueda bidireccional

    La función SUMPRODUCT es como una navaja suiza en Excel - puede hacer muchas cosas más allá de su propósito designado, especialmente cuando se trata de evaluar múltiples criterios.

    Para buscar dos criterios, en filas y columnas, utilice esta fórmula genérica:

    SUMPRODUCTO( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), matriz_de_datos )

    Para realizar una búsqueda bidireccional en nuestro conjunto de datos, la fórmula es la siguiente:

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

    La siguiente sintaxis también funcionará:

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

    Cómo funciona esta fórmula

    En el núcleo de la fórmula, comparamos dos valores de búsqueda con los encabezados de fila y columna (el animal objetivo en H1 con todos los nombres de animales en A2:A4 y el año objetivo en H2 con todos los años en B1:E1):

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

    Esto da como resultado 2 matrices de valores TRUE y FALSE, donde TRUE representa coincidencias:

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

    La operación de multiplicación convierte los valores TRUE y FALSE en 1's y 0's y produce una matriz bidimensional de 4 columnas y 3 filas (las filas están separadas por punto y coma y cada columna de datos por una coma):

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

    Las funciones SUMPRODUCT multiplican los elementos de la matriz anterior por los elementos de B2:E4 en las mismas posiciones:

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

    Y como multiplicar por cero da cero, sólo sobrevive el elemento correspondiente a 1 en la primera matriz:

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

    Por último, SUMPRODUCT suma los elementos de la matriz resultante y devuelve el valor 2000.

    Nota. Si su tabla tiene más de una fila o/y cabeceras de columna con el mismo nombre, la matriz final contendrá más de un número distinto de cero, y todos esos números se sumarán. Como resultado, obtendrá una suma de los valores que cumplan ambos criterios. Esto es lo que diferencia a la fórmula SUMPRODUCT de INDEX MATCH y VLOOKUP, que devuelven la primera coincidencia encontrada.

    Búsqueda de matrices con rangos nombrados (Intersección explícita)

    Otra forma asombrosamente sencilla de realizar una búsqueda matricial en Excel es mediante el uso de rangos con nombre. He aquí cómo:

    Parte 1: Nombrar columnas y filas

    La forma más rápida de nombrar cada fila y cada columna de la tabla es la siguiente:

    1. Seleccione toda la tabla (A1:E4 en nuestro caso).
    2. En el Fórmulas en la pestaña Nombres definidos grupo, haga clic en Crear a partir de selección o pulse la combinación de teclas Ctrl + Mayús + F3.
    3. En el Crear nombres a partir de una selección seleccione Fila superior y Columna de la izquierda, y haz clic en Aceptar.

    Esto crea automáticamente nombres basados en las cabeceras de fila y columna. Sin embargo, hay un par de advertencias:

    • Si los encabezados de sus columnas y/o filas son números o contienen caracteres específicos que no están permitidos en los nombres de Excel, no se crearán los nombres para dichas columnas y filas. Para ver una lista de los nombres creados, abra el Administrador de nombres ( Ctrl + F3 ). Si faltan algunos nombres, defínalos manualmente como se explica en Cómo nombrar un rango en Excel.
    • Si algunos de los encabezados de fila o columna contienen espacios, éstos se sustituirán por guiones bajos, por ejemplo, Polar_bear .

    Para nuestra tabla de ejemplo, Excel ha creado automáticamente sólo los nombres de las filas. Los nombres de las columnas deben crearse manualmente, ya que los encabezados de las columnas son números. Para evitarlo, puede anteponer guiones bajos a los números, por ejemplo _1990 .

    Como resultado, tenemos los siguientes rangos con nombre:

    Parte 2: Crear una fórmula de búsqueda matricial

    Para extraer un valor en la intersección de una fila y una columna determinadas, basta con escribir una de las siguientes fórmulas genéricas en una celda vacía:

    = nombre_fila nombre_columna

    O viceversa:

    = nombre_columna nombre_fila

    Por ejemplo, para obtener la población de ballenas azules en 1990, la fórmula es tan sencilla como

    =Blue_whale _1990

    Si alguien necesita instrucciones más detalladas, los pasos siguientes le guiarán a través del proceso:

    1. En una celda en la que desee que aparezca el resultado, escriba el signo de igualdad (=).
    2. Empieza a escribir el nombre de la fila de destino, digamos, Ballena_azul Después de escribir un par de caracteres, Excel mostrará todos los nombres existentes que coincidan con los introducidos. Haga doble clic en el nombre deseado para introducirlo en la fórmula:
    3. Después del nombre de la fila, escriba un espacio que funciona como operador de intersección en este caso.
    4. Introduzca el nombre de la columna de destino ( _1990 en nuestro caso).
    5. En cuanto se introduzcan los nombres de fila y columna, Excel resaltará la fila y columna correspondientes en la tabla y se pulsará Intro para completar la fórmula:

    Su búsqueda de matriz está hecha, y la siguiente captura de pantalla muestra el resultado:

    Así es como se busca en filas y columnas en Excel. Te doy las gracias por leer y ¡espero verte en nuestro blog la semana que viene!

    Descargas disponibles

    2-dimensional lookup sample workbook

    Michael Brown es un entusiasta de la tecnología dedicado y apasionado por simplificar procesos complejos utilizando herramientas de software. Con más de una década de experiencia en la industria de la tecnología, ha perfeccionado sus habilidades en Microsoft Excel y Outlook, así como en Google Sheets y Docs. El blog de Michael está dedicado a compartir su conocimiento y experiencia con otros, brindando consejos y tutoriales fáciles de seguir para mejorar la productividad y la eficiencia. Ya sea un profesional experimentado o un principiante, el blog de Michael ofrece información valiosa y consejos prácticos para aprovechar al máximo estas herramientas de software esenciales.