VLOOKUP avanzado en Excel: múltiple, doble, anidado

  • Compartir Este
Michael Brown

Estos ejemplos le enseñarán cómo hacer Vlookup con múltiples criterios, devolver una instancia específica o todas las coincidencias, hacer Vlookup dinámico en múltiples hojas, y más.

Es la segunda parte de la serie que le ayudará a aprovechar el poder de Excel VLOOKUP. Los ejemplos implican que usted sabe cómo funciona esta función. Si no es así, es lógico comenzar con los usos básicos de VLOOKUP en Excel.

Antes de seguir adelante, permítanme recordarles brevemente la sintaxis:

VLOOKUP(valor_buscado, matriz_tabla, número_índice_col, [rango_buscado])

Ahora que todo el mundo está en la misma página, echemos un vistazo más de cerca a los ejemplos de fórmulas VLOOKUP avanzadas:

    Cómo hacer Vlookup con múltiples criterios

    La función VLOOKUP de Excel es realmente útil cuando se trata de buscar un determinado valor en una base de datos. Sin embargo, carece de una característica importante: su sintaxis sólo permite un valor de búsqueda. Pero, ¿qué ocurre si desea realizar una búsqueda con varias condiciones? Puede elegir entre varias soluciones.

    Fórmula 1. VLOOKUP con dos criterios

    Suponga que tiene una lista de pedidos y desea encontrar la cantidad en función de 2 criterios, Nombre del cliente y Producto Un factor que complica la situación es que cada cliente pidió varios productos, como se muestra en la tabla siguiente:

    Una fórmula VLOOKUP normal no funcionará en esta situación porque devuelve la primera coincidencia encontrada basada en un único valor de búsqueda que se especifica.

    Para solucionarlo, puede añadir una columna auxiliar y concatenar los valores de dos columnas de búsqueda ( Cliente y Producto Es importante que la columna de ayuda sea la columna más a la izquierda en la matriz de la tabla porque es donde Excel VLOOKUP siempre busca el valor de búsqueda.

    Así pues, añada una columna a la izquierda de su tabla y copie la fórmula siguiente en esa columna. Esto rellenará la columna de ayuda con los valores de las columnas B y C (el carácter de espacio se concatena entre ellas para facilitar la lectura):

    =B2&" "&C2

    A continuación, utilice una fórmula VLOOKUP estándar y coloque ambos criterios en el campo buscar_valor separados por un espacio:

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

    O bien, introduzca los criterios en celdas separadas (G1 y G2 en nuestro caso) y concaténelas:

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

    Como queremos devolver un valor de la columna D, que es la cuarta en la matriz de la tabla, utilizamos 4 para col_index_num . búsqueda_de_rango se establece en FALSE para que Vlookup obtenga una coincidencia exacta. La siguiente captura de pantalla muestra el resultado:

    En caso de que su tabla de consulta esté en otra hoja incluya el nombre de la hoja en la fórmula VLOOKUP, por ejemplo:

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

    Como alternativa, cree un rango con nombre para la tabla de consulta (digamos, Pedidos ) para facilitar la lectura de la fórmula:

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

    Para obtener más información, consulte Cómo hacer Vlookup desde otra hoja en Excel.

    Nota: para que la fórmula funcione correctamente, los valores de la columna auxiliar deben concatenarse exactamente igual que en la columna buscar_valor Por ejemplo, hemos utilizado un espacio para separar los criterios tanto en la columna de ayuda (B2&" "&C2) como en la fórmula VLOOKUP (G1&" "&G2).

    Fórmula 2. Excel VLOOKUP con múltiples condiciones

    En teoría, puede utilizar el método anterior para realizar una búsqueda Vlookup de más de dos criterios. Sin embargo, hay un par de advertencias. En primer lugar, un valor de búsqueda está limitado a 255 caracteres y, en segundo lugar, es posible que el diseño de la hoja de cálculo no permita añadir una columna de ayuda.

    Por suerte, Microsoft Excel a menudo proporciona más de una forma de hacer lo mismo. Para hacer Vlookup con varios criterios, puede utilizar una combinación INDEX MATCH o la función XLOOKUP introducida recientemente en Office 365.

    Por ejemplo, para buscar a partir de 3 valores diferentes ( Fecha , Nombre del cliente y Producto ), utilice una de las siguientes 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)

    Dónde:

    • G1 es el criterio 1 (fecha)
    • G2 es el criterio 2 (nombre del cliente)
    • G3 es el criterio 3 (producto)
    • A2:A11 es el rango de búsqueda 1 (fechas)
    • B2:B11 es el rango de búsqueda 2 (nombres de clientes)
    • C2:C11 es el rango de búsqueda 3 (productos)
    • D2:D11 es el rango de retorno (cantidad)

    Nota: En todas las versiones excepto Excel 365, INDEX MATCH debe introducirse como una fórmula de matriz CSE pulsando Ctrl + Mayús + Intro. En Excel 365 que admite matrices dinámicas también funciona como una fórmula normal.

    Para la explicación detallada de las fórmulas, véase:

    • XLOOKUP con criterios múltiples
    • Fórmula INDEX MATCH con criterios múltiples

    Cómo utilizar VLOOKUP para obtener la 2ª, 3ª o enésima coincidencia

    Como ya sabe, Excel VLOOKUP sólo puede obtener un valor coincidente, más concretamente, devuelve la primera coincidencia encontrada. Pero, ¿qué ocurre si hay varias coincidencias en su matriz de búsqueda y desea obtener la segunda o tercera instancia? La tarea parece bastante complicada, ¡pero la solución existe!

    Fórmula 1. Vlookup Nth instancia

    Suponga que tiene los nombres de los clientes en una columna, los productos que han comprado en otra, y que busca el segundo o tercer producto comprado por un cliente determinado.

    La forma más sencilla es añadir una columna de ayuda a la izquierda de la tabla, como hicimos en el primer ejemplo. Pero esta vez, la rellenaremos con nombres de clientes y números de incidencia como " Juan Pérez1 ", " Juan Pérez2 "etc.

    Para obtener la ocurrencia, utilice la función COUNTIF con una referencia de rango mixto (la primera referencia es absoluta y la segunda es relativa como $B$2:B2). Dado que la referencia relativa cambia en función de la posición de la celda donde se copia la fórmula, en la fila 3 se convertirá en $B$2:B3, en la fila 4 - $B$2:B4, y así sucesivamente.

    Concatenada con el nombre del cliente (B2), la fórmula adopta esta forma:

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

    La fórmula anterior va a A2, y luego la copias en tantas celdas como necesites.

    A continuación, introduzca el nombre de destino y el número de ocurrencia en celdas separadas (F1 y F2) y utilice la siguiente fórmula para realizar una búsqueda rápida de una ocurrencia específica:

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

    Fórmula 2. Vlookup 2ª ocurrencia

    Si lo que busca es la segunda instancia del valor de búsqueda, puede prescindir de la columna auxiliar. En su lugar, cree la matriz de la tabla de forma dinámica utilizando la función INDIRECT junto con MATCH:

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

    Dónde:

    • E1 es el valor de búsqueda
    • A2:A11 es el rango de búsqueda
    • B11 es la última celda (abajo a la derecha) de la tabla de consulta

    Tenga en cuenta que la fórmula anterior está escrita para un caso específico en el que las celdas de datos de la tabla de consulta comienzan en la fila 2. Si su tabla se encuentra en algún lugar de la mitad de la hoja, utilice esta fórmula universal, en la que A1 es la celda superior izquierda de la tabla de consulta que contiene una cabecera de columna:

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

    Cómo funciona esta fórmula

    Aquí está la parte clave de la fórmula que crea un rango dinámico de vlookup :

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

    La función MATCH configurada para coincidencia exacta (0 en el último argumento) compara el nombre de destino (E1) con la lista de nombres (A2:A11) y devuelve la posición de la primera coincidencia encontrada, que en nuestro caso es 3. Este número se va a utilizar como coordenada de la fila inicial para el rango de vlookup, por lo que le sumamos 2 (+1 para excluir la primera instancia y +1 para excluir la fila 1 con las cabeceras de columna).También puede utilizar 1+ROW(A1) para calcular automáticamente el ajuste necesario en función de la posición de la fila de cabecera (A1 en nuestro caso).

    Como resultado, obtenemos la siguiente cadena de texto, que INDIRECTO convierte en una referencia de rango:

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

    Esta gama llega hasta el tabla_array de VLOOKUP forzándolo a empezar a buscar en la fila 5, omitiendo la primera instancia del valor de búsqueda:

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

    Cómo hacer Vlookup y devolver múltiples valores en Excel

    La función VLOOKUP de Excel está diseñada para devolver una sola coincidencia. ¿Existe alguna forma de hacer Vlookup en varias instancias? Sí, existe, aunque no es fácil. Esto requiere el uso combinado de varias funciones como INDEX, SMALL y ROW es una fórmula de array.

    Por ejemplo, lo siguiente puede encontrar todas las apariciones del valor de búsqueda F2 en el rango de búsqueda B2:B16 y devolver múltiples coincidencias de 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)),"")}

    Hay 2 formas de introducir la fórmula en la hoja de cálculo:

    1. Escribe la fórmula en la primera celda, pulsa Ctrl + Mayús + Intro , y luego arrástrala hacia abajo a unas cuantas celdas más.
    2. Seleccione varias celdas adyacentes en una misma columna (F1:F11 en la captura de pantalla siguiente), escriba la fórmula y pulse Ctrl + Mayús + Intro para completarla.

    En cualquier caso, el número de celdas en las que introduzca la fórmula debe ser igual o superior al número máximo de coincidencias posibles.

    Para la explicación detallada de la lógica de la fórmula y más ejemplos, por favor vea Cómo VLOOKUP múltiples valores en Excel.

    Cómo hacer Vlookup en filas y columnas (búsqueda bidireccional)

    Búsqueda bidireccional (alias búsqueda de matrices o Búsqueda bidimensional ) es una palabra elegante para buscar un valor en la intersección de una fila y una columna determinadas. Existen varias formas diferentes de realizar búsquedas bidimensionales en Excel, pero dado que este tutorial se centra en la función VLOOKUP, naturalmente la utilizaremos.

    Para este ejemplo, tomaremos la siguiente tabla con las ventas mensuales y elaboraremos una fórmula VLOOKUP para recuperar la cifra de ventas de un artículo específico en un mes determinado.

    Con los nombres de los artículos en A2:A9, los nombres de los meses en B1:F1, el artículo de destino en I1 y el mes de destino en I2, la fórmula es la siguiente:

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

    Cómo funciona esta fórmula

    El núcleo de la fórmula es la función VLOOKUP estándar que busca una coincidencia exacta con el valor de búsqueda en I1. Pero como no sabemos exactamente en qué columna están las ventas de un mes concreto, no podemos suministrar el número de columna directamente a la función col_index_num Para encontrar esa columna, utilizamos la siguiente función MATCH:

    MATCH(I2, A1:F1, 0)

    Traducido al español, la fórmula dice: busca el valor I2 en A1:F1 y devuelve su posición relativa en la matriz. Al introducir 0 en el tercer argumento, se indica a MATCH que busque el valor exactamente igual al valor buscado (es como utilizar FALSE para el argumento búsqueda_de_rango de VLOOKUP).

    Desde Mar está en la 4ª columna de la matriz de búsqueda, la función MATCH devuelve 4, que va directamente a la columna col_index_num argumento de VLOOKUP:

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

    Preste atención a que, aunque los nombres de los meses empiezan en la columna B, utilizamos A1:I1 para la matriz de búsqueda. Esto se hace para que el número devuelto por MATCH se corresponda con la posición de la columna en tabla_array de VLOOKUP.

    Para aprender más formas de realizar búsquedas de matrices en Excel, por favor, vea INDEX MATCH y otras fórmulas para búsquedas bidimensionales.

    Cómo hacer múltiples Vlookup en Excel (Vlookup anidado)

    A veces puede ocurrir que la tabla principal y la tabla de consulta no tengan ni una sola columna en común, lo que le impide hacer un Vlookup entre dos tablas. Sin embargo, existe otra tabla, que no contiene la información que busca pero tiene una columna común con la tabla principal y otra columna común con la tabla de consulta.

    La siguiente imagen ilustra la situación:

    El objetivo es copiar los precios en la tabla principal en función de Identificación de artículos El problema es que la tabla que contiene los precios no tiene la etiqueta Identificación de artículos lo que significa que tendremos que hacer dos Vlookups en una fórmula.

    Por comodidad, vamos a crear primero un par de rangos con nombre:

    • La tabla de consulta 1 se denomina Productos (D3:E10)
    • La tabla de consulta 2 se denomina Precios ( G3:H10 )

    Las tablas pueden estar en la misma o en diferentes hojas de cálculo.

    Y ahora, realizaremos el llamado doble Vlookup , alias Vlookup anidado .

    En primer lugar, cree una fórmula VLOOKUP para buscar el nombre del producto en la tabla Lookup 1 (denominada Productos ) en función del identificador del artículo (A3):

    =VLOOKUP(A3, Productos, 2, FALSE)

    A continuación, introduzca la fórmula anterior en el campo buscar_valor argumento de otra función VLOOKUP para extraer los precios de la tabla Lookup 2 (denominada Precios ) basado en el nombre del producto devuelto por el VLOOKUP anidado:

    =VLOOKUP(VLOOKUP(A3, Productos, 2, FALSE), Precios, 2, FALSE)

    La siguiente captura de pantalla muestra nuestra fórmula Vlookup anidada en acción:

    Cómo hacer Vlookup en varias hojas de forma dinámica

    A veces, puede tener datos en el mismo formato repartidos en varias hojas de cálculo. Y su objetivo es extraer datos de una hoja específica en función del valor clave de una celda determinada.

    Supongamos que dispone de varios informes de ventas regionales con el mismo formato y desea obtener las cifras de ventas de un producto específico en determinadas regiones:

    Como en el ejemplo anterior, empezamos definiendo algunos nombres:

    • El rango A2:B5 de la hoja CA se denomina CA_Ventas .
    • El rango A2:B5 de la hoja FL se denomina FL_Ventas .
    • El rango A2:B5 de la hoja KS se denomina KS_Ventas .

    Como puede ver, todos los rangos nombrados tienen una parte común ( Ventas ) y piezas únicas ( CA , FL , KS Por favor, asegúrese de nombrar sus rangos de una manera similar, ya que es esencial para la fórmula que vamos a construir.

    Fórmula 1. VLOOKUP INDIRECTO para extraer dinámicamente datos de diferentes hojas

    Si su tarea consiste en recuperar datos de varias hojas, una fórmula VLOOKUP INDIRECT es la mejor solución: compacta y fácil de entender.

    Para este ejemplo, organizamos la tabla resumen de esta manera:

    • Introduzca los productos de interés en A2 y A3. Ésos son nuestros valores de búsqueda.
    • Introduzca las partes únicas de los rangos nombrados en B1, C1 y D1.

    Y ahora, concatenamos la celda que contiene la parte única (B1) con la parte común ("_Ventas"), y pasamos la cadena resultante a INDIRECTO:

    INDIRECT(B$1&"_Ventas")

    La función INDIRECTO transforma la cadena en un nombre comprensible para Excel y lo coloca en el campo tabla_array argumento de VLOOKUP:

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

    La fórmula anterior va a B2, y luego la copias hacia abajo y a la derecha.

    Presta atención a que, en el valor de búsqueda ($A2), hemos bloqueado la coordenada de columna con referencia de celda absoluta para que la columna permanezca fija cuando la fórmula se copie a la derecha. En la referencia B$1, hemos bloqueado la fila porque queremos que la coordenada de columna cambie y suministre una parte de nombre apropiada a INDIRECTO dependiendo de la columna en la que se copie la fórmula:

    Si su tabla principal está organizada de forma diferente, los valores de búsqueda en una fila y las partes únicas de los nombres de rango en una columna, entonces debe bloquear la coordenada de la fila en el valor de búsqueda (B$1) y la coordenada de la columna en las partes del nombre ($A2):

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

    Fórmula 2. VLOOKUP e IFs anidados para buscar en varias hojas

    Si sólo dispone de dos o tres hojas de consulta, puede utilizar una fórmula VLOOKUP bastante sencilla con funciones IF anidadas para seleccionar la hoja correcta en función del valor clave de una celda concreta:

    =VLOOKUP($A2, IF(B$1="CA", CA_ventas, IF(B$1="FL", FL_ventas, IF(B$1="KS", KS_ventas,"")), 2, FALSE)

    Donde $A2 es el valor de búsqueda (nombre del artículo) y B$1 es el valor clave (estado):

    En este caso, no es necesario definir nombres y puede utilizar referencias externas para referirse a otra hoja o libro de trabajo.

    Para ver más ejemplos de fórmulas, consulte Cómo realizar VLOOKUP en varias hojas de Excel.

    Así es como se utiliza VLOOKUP en Excel. Gracias por leer y ¡espero verte en nuestro blog la semana que viene!

    Cuaderno de prácticas para descargar

    Ejemplos de fórmulas VLOOKUP avanzadas (archivo .xlsx)

    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.