curso
XLOOKUP() frente a VLOOKUP(): una comparación para usuarios de Excel
Durante décadas, VLOOKUP()
ha sido la función usada en Excel para buscar datos. Es una herramienta fiable, pero tiene limitaciones. Por eso, en 2019 se introdujo XLOOKUP()
, una nueva función con capacidades avanzadas. En este artículo, compararemos VLOOKUP()
y XLOOKUP()
para comprender mejor sus características y diferentes usos.
Ten en cuenta que el cambio de VLOOKUP()
a XLOOKUP()
es solo una de las muchas actualizaciones de Excel. Estar al día de la evolución de las funciones de Excel es importante para maximizar la productividad. Por eso, debes consultar el programa de competencias Fundamentos de Excel para asegurarte de que utilizas las características más recientes.
Sintaxis de XLOOKUP() y VLOOKUP()
Ahora que tienes una comprensión básica de ambas funciones, comprendamos su sintaxis y cómo utilizarlas en aplicaciones de la vida real.
Sintaxis de VLOOKUP()
Veamos la sintaxis de VLOOKUP()
.
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
En la fórmula anterior:
-
lookup_value
es el valor que quieres buscar. Puede ser un número, texto o una referencia a una celda que contiene el valor de búsqueda. -
table_array
es el intervalo de celdas que contiene los datos. La primera columna de este intervalo debe contener lasearch_key
. -
col_index_num
es el número de columna del intervalo del que quieres recuperar el valor. -
range_lookup
es donde introduces un valor lógico (TRUE
oFALSE
).
Sintaxis de XLOOKUP()
Veamos ahora la sintaxis de xlookup()
. Como vemos, XLOOKUP()
tiene más argumentos que VLOOKUP()
.
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
En la fórmula anterior:
-
lookup_value
es el valor que quieres buscar. -
lookup_array
es el intervalo de celdas donde se busca el valor de búsqueda. -
return_array
es el intervalo de celdas que contiene el valor que quieres devolver. -
if_not_found
(opcional) devuelve un valor si no se encuentra ninguna coincidencia. Si no se especifica el valor, devuelve#N/A
. -
match_mode
(opcional) determina el tipo de coincidencia.0
es para la coincidencia exacta (valor predeterminado).-1
es para la coincidencia exacta o el siguiente elemento menor.1
es para la coincidencia exacta o el siguiente elemento mayor.2
es para la coincidencia de caracteres comodín. -
search_mode
(opcional) determina el modo de búsqueda.1
se utiliza para buscar del primero al último (valor predeterminado).-1
se utiliza para buscar del último al primero.2
se utiliza para realizar la búsqueda binaria en orden ascendente.-2
se utiliza para realizar la búsqueda binaria en orden descendente.
Principales diferencias: XLOOKUP() frente a VLOOKUP()
Exploremos ahora algunas diferencias clave entre las funciones XLOOKUP()
y VLOOKUP()
.
Modo de coincidencia exacta
XLOOKUP()
utiliza de forma predeterminada el modo de coincidencia exacta, pero VLOOKUP()
requiere especificar FALSE
para una coincidencia exacta.
Diferencia de coincidencia exacta entre XLOOKUP() y VLOOKUP(). Fuente: Imagen del autor.
En VLOOKUP()
no he especificado el valor de range_lookup
(4.º argumento), por lo que ha dado la coincidencia más cercana, que no es nuestro resultado deseado. XLOOKUP()
, en cambio, devuelve de forma predeterminada la coincidencia exacta.
Dirección de búsqueda
VLOOKUP()
se limita a buscar solo a la derecha de la primera columna de la matriz de la tabla seleccionada. Sin embargo, XLOOKUP()
puede buscar valores en cualquier dirección.
Diferencia de dirección de búsqueda entre VLOOKUP() y XLOOKUP(). Fuente: Imagen del autor.
Aquí, VLOOKUP()
no ha encontrado calificaciones porque solo puede buscar datos a la derecha del lookup_value
(nombre del alumno). Por el contrario, XLOOKUP()
encuentra las calificaciones de Robin porque puede buscar en cualquier dirección (a izquierda o derecha).
Referencias de matrices
En VLOOKUP()
, tienes que definir todo el intervalo de datos (matriz de tabla) y especificar el número de columna (índice de columna) que contiene la salida deseada (columna de retorno) dentro de una única fórmula. XLOOKUP()
es más flexible. Te permite definir matrices separadas para el valor de búsqueda y los datos que quieres devolver.
Referencias de matrices entre VLOOKUP() y XLOOKUP(). Fuente: Imagen del autor.
Búsqueda horizontal
VLOOKUP()
no te permite realizar búsquedas horizontales. Si quieres una búsqueda horizontal, tendrías que utilizar HLOOKUP()
. XLOOKUP()
consolida estas dos funciones porque realiza búsquedas tanto verticales como horizontales, de modo que no tienes que utilizar funciones distintas para direcciones de búsqueda diferentes.
Diferencia de búsqueda horizontal entre VLOOKUP() y XLOOKUP(). Fuente: Imagen del autor.
Gestión de inserciones o eliminaciones de columnas
Los cambios de columna afectan a VLOOKUP()
debido a la codificación rígida de column_index_num
. Sin embargo, XLOOKUP()
no se ve afectado por los cambios de columna. Sigue funcionando sin ajustes en la fórmula.
XLOOKUP() no se ve afectado, mientras que VLOOKUP() falla. Fuente: Imagen del autor.
Ordenar y buscar
Puedes ordenar VLOOKUP()
en orden ascendente, pero esto provocaría dificultades al tratar con datos sin ordenar. Sin embargo, XLOOKUP()
puede utilizar el argumento search_mode
para buscar tanto en orden ascendente como descendente.
Gestión de la inserción y la eliminación en XLOOKUP() y VLOOKUP(). Fuente: Imagen del autor.
Mensajes de error personalizados
VLOOKUP()
muestra un signo de error #N/A
cuando no se encuentra ninguna coincidencia. XLOOKUP()
tiene un parámetro opcional if_not_found
que te permite personalizar el texto de salida si no se encuentra un valor.
Personalización de los mensajes de error en XLOOKUP() y VLOOKUP(). Fuente: Imagen del autor.
Puedes ver que VLOOKUP()
no ha podido encontrar al alumno en su lista y ha mostrado un error #N/A
. Del mismo modo, la función XLOOKUP()
no ha podido localizar el nombre del alumno. Sin embargo, a diferencia de VLOOKUP()
, XLOOKUP()
devuelve un mensaje específico cuando no hay ninguna coincidencia.
Devolver varios valores
VLOOKUP()
solo puede devolver un valor cada vez. Sin embargo, XLOOKUP()
puede recuperar valores de varias columnas simultáneamente. Por eso, puedes utilizar una fórmula de XLOOKUP()
en lugar de varias fórmulas de VLOOKUP()
.
Devolución de varios valores con XLOOKUP() y VLOOKUP(). Fuente: Imagen del autor.
Modo de búsqueda
VLOOKUP()
examina una lista desde el principio y solo devuelve el primer valor que coincida con lo que quieres. Sin embargo, XLOOKUP()
puede analizar una lista en cualquier dirección (de arriba abajo o de abajo arriba) y encontrar cosas rápidamente en listas extensas.
Diferencia entre VLOOKUP() y XLOOKUP(). Fuente: Imagen del autor.
Aquí, VLOOKUP()
recupera la primera aparición, que es del primer semestre. Sin embargo, con XLOOKUP()
, utilizo el código de modo de búsqueda -1
para buscar de abajo arriba.
Ejemplos prácticos y casos de uso
Veamos ahora algunos ejemplos prácticos y casos de uso.
Utilizar una búsqueda sin tener que reorganizar una tabla
Tengo una lista de nombres y puntuaciones de alumnos, y quiero encontrar la puntuación de cada alumno en función de su nombre. Para ello, utilizaré las funciones XLOOKUP()
y VLOOKUP()
para mostrarte las diferencias.
Cuando utilizo XLOOKUP()
, introduzco la siguiente fórmula:
=XLOOKUP(D8,B2:B5,A2:A5)
En esta fórmula:
-
D8
contiene el valor de búsqueda, que es Charlie. -
El intervalo
B2:B5
contiene los nombres de los alumnos. La funciónXLOOKUP()
buscará el valor de D8 dentro de este intervalo. -
A2:A5
es el intervalo que contiene las puntuaciones correspondientes a los nombres de los alumnos.
Cuando utilizo VLOOKUP()
, introduzco la siguiente fórmula:
=VLOOKUP(D4,A1:B5,1,0)
En esta fórmula:
-
D4
contiene el valor de búsqueda, que es Charlie. -
El intervalo
A1:B5
busca dentro de todas las columnas (Scores, Student y Name). -
1
devuelve el valor de la 1.ª columna del intervalo (Scores). -
0
recupera la coincidencia exacta.
VLOOKUP() devuelve un error #N/A, pero XLOOKUP() lo gestiona. Fuente: Imagen del autor.
Como puedes ver, VLOOKUP()
muestra un error #N/A
porque no puede buscar a la izquierda.
Crear una salida personalizada cuando no se encuentra un valor
Tengo una lista de alumnos con sus ID, nombres y calificaciones. Mientras buscaba, introduje accidentalmente un ID de alumno que no estaba en la lista. Para gestionar este caso, quiero que aparezca un mensaje personalizado cada vez que no se encuentre el ID de alumno. Utilizaré las funciones XLOOKUP()
y VLOOKUP()
para mostrarte las diferencias.
Cuando utilizo XLOOKUP()
, introduzco la siguiente fórmula:
(=XLOOKUP(E9, A2:A5, B2:B5, "Student not Found"))
En esta fórmula:
-
E9
contiene el valor que queremos buscar. En mi caso, es 14256. -
A2:A5
es el intervalo de celdas que contiene el valor de búsqueda (Student ID). -
B2:B5
busca la puntuación del ID 14526. -
Student not Found
aparece si la puntuación no está en la lista.
Cuando utilizo VLOOKUP()
, introduzco la siguiente fórmula:
(=VLOOKUP(E6, A2:C5,2,0))
En esta fórmula:
-
E6
hace referencia a Student ID, que es lo que estoy buscando. -
A2:C5
hace referencia al intervalo que contiene todos los datos de la tabla. -
2
indica el número de columna del que se obtendrán los datos. -
0
recupera la coincidencia exacta.
XLOOKUP() devuelve un mensaje, pero VLOOKUP() no. Fuente: Imagen del autor.
Puedes ver que 14256 no existe en el intervalo A2:A5
, por lo que XLOOKUP()
devuelve el mensaje personalizado Student not found
. Y VLOOKUP()
, en cambio, arroja un error #N/A
.
Buscar de abajo arriba
Quiero encontrar el salario de Sarah del año más reciente. Para ello, utilizaré las funciones XLOOKUP()
y VLOOKUP()
para mostrarte las diferencias.
Cuando utilizo XLOOKUP()
, introduzco la siguiente fórmula:
=XLOOKUP(F8,B2:B10,C2:C10,,,-1)
En esta fórmula:
-
F8
contiene el valor de búsqueda Sarah. -
B2:B10
mira en el intervalo y busca Sarah. -
C2:C10
recupera los datos. -
-1
busca desde la parte inferior de la columna.
Cuando utilizo VLOOKUP()
, introduzco la siguiente fórmula:
=VLOOKUP(F4, B2:C10,2,0)
En esta fórmula:
-
F4
contiene el valor de búsqueda Sarah. -
B2:C10
busca el valor de búsqueda dentro de este intervalo. -
2
indica el número de columna Salary, de la que se obtendrán los datos. -
0
recupera la coincidencia exacta.
Diferencia entre VLOOKUP() y XLOOKUP() en modo de búsqueda. Fuente: Imagen del autor.
Puedes ver que XLOOKUP()
encuentra el salario deseado para el año deseado, mientras que VLOOKUP()
solo muestra el primer valor coincidente. He podido hacer esto porque XLOOKUP()
me permite buscar de abajo arriba.
Rendimiento y compatibilidad
Comparemos ahora el rendimiento y la compatibilidad de ambas funciones.
Rendimiento en grandes conjuntos de datos
VLOOKUP()
puede ser más lento cuando se gestionan conjuntos de datos grandes, especialmente si la columna de búsqueda no está ordenada y el argumento de búsqueda de intervalo se establece en FALSE
para una coincidencia exacta. Esto se debe a que VLOOKUP()
analiza el conjunto de datos secuencialmente hasta que encuentra una coincidencia, lo que puede llevar mucho tiempo en el caso de tablas grandes. XLOOKUP()
ofrece un mejor rendimiento con conjuntos de datos grandes. Puede gestionar las coincidencias exactas de forma más eficiente y buscar horizontal y verticalmente sin ordenar.
Compatibilidad con diferentes versiones de Excel
Ahora debes estar pensando en abandonar VLOOKUP()
después de ver las ventajas de XLOOKUP()
. Sin embargo, permíteme una aclaración: aunque XLOOKUP()
es una función mucho más rápida y excelente, hay un par de ocasiones en las que no está disponible. Esto se debe a que XLOOKUP()
es una característica más reciente que solo funciona en Excel 2021 y Microsoft 365 (a partir de 2019). Si colaboras con personas que utilizan versiones anteriores de Excel, tendrás que utilizar VLOOKUP()
y otras funciones en lugar de XLOOKUP()
.
Cuadro sinóptico
Creemos un cuadro sinóptico para facilitar la consulta.
Característica | VLOOKUP() | XLOOKUP() |
---|---|---|
Modo de coincidencia predeterminado | Requiere especificar FALSE para una coincidencia exacta. |
Usa de forma predeterminada la coincidencia exacta. |
Dirección de búsqueda | Solo busca a la derecha de la columna de búsqueda. | Puede buscar en cualquier dirección (izquierda, derecha, arriba, abajo). |
Referencias de matrices | Requiere definir todo el intervalo de datos y el índice de columna en una sola fórmula. | Permite matrices separadas para el valor de búsqueda y los valores de retorno. |
Búsqueda horizontal | No admite búsquedas horizontales (HLOOKUP() es necesario). |
Admite búsquedas verticales y horizontales. |
Gestión de los cambios de columna | Afectado por inserciones y eliminaciones de columnas debido a la codificación rígida de los índices de columna. | No se ve afectado por los cambios de columna, sigue funcionando sin ajustes. |
Ordenar y buscar | Limitado a ordenar en orden ascendente. | Puede buscar en orden ascendente y descendente utilizando el argumento search_mode . |
Mensajes de error personalizados | Muestra el error #N/A cuando no se encuentra ninguna coincidencia. |
Permite personalizar el mensaje de salida cuando no se encuentra ninguna coincidencia. |
Devolver varios valores | Solo puede devolver un valor cada vez. | Puede recuperar valores de varias columnas simultáneamente. |
Modo de búsqueda | Busca de arriba abajo y devuelve la primera coincidencia. | Puede buscar en ambas direcciones (de arriba abajo o de abajo arriba) para obtener resultados más rápidos en listas extensas. |
Rendimiento en grandes conjuntos de datos | Puede ser más lento, especialmente con datos sin ordenar o cuando range_lookup es FALSE . |
Mejor rendimiento, gestiona con eficiencia grandes conjuntos de datos y busca sin ordenar. |
Compatibilidad | Funciona con todas las versiones de Excel. | Solo disponible en Excel 2021 y Microsoft 365 (a partir de 2019). |
Reflexiones finales | Sigue siendo útil para versiones anteriores de Excel o tareas de búsqueda más sencillas. | Más potente y flexible, más adecuado para búsquedas complejas o a gran escala. |
Reflexiones finales
XLOOKUP()
supera a VLOOKUP()
, especialmente cuando se gestionan grandes conjuntos de datos o los requisitos de la búsqueda son complejos. Su flexibilidad, que incluye búsqueda bidireccional, recuperación de varios resultados y adaptabilidad a los cambios de datos, lo convierte en una herramienta útil. Sin embargo, VLOOKUP()
sigue teniendo su lugar, sobre todo para los usuarios de versiones anteriores de Excel o para los que prefieren un enfoque más sencillo de las búsquedas básicas. La mejor opción depende, en última instancia, de tus necesidades específicas y de la versión de Excel.
Si eres principiante en Excel o quieres construir una base sólida, nuestro curso Introducción a Excel y el programa de competencias Fundamentos de Excel son excelentes puntos de partida para dominar los conceptos básicos.
Preguntas frecuentes
¿Es XLOOKUP() mejor que VLOOKUP()?
Sí, XLOOKUP()
es mejor porque puede buscar en cualquier columna de una tabla, devolver varios resultados, gestionar mejor los errores y realizar búsquedas verticales y horizontales.
¿Cuáles son las limitaciones de VLOOKUP() en comparación con XLOOKUP()?
VLOOKUP()
se limita a buscar en la primera columna de un intervalo especificado. Y solo puede devolver un resultado por búsqueda.
¿Puede XLOOKUP() gestionar operaciones de matrices como SUMIFS() o COUNTIFS()?
Sí, XLOOKUP()
puede utilizarse con funciones de matrices como SUMIFS()
y COUNTIFS()
para realizar cálculos más complejos y tareas de análisis de datos.
Aprende Excel con DataCamp
curso
Power Pivot en Excel
curso
Caso práctico: Net Revenue Management en Excel
tutorial
Cómo hacer un VLOOKUP() con múltiples criterios
Laiba Siddiqui
10 min
tutorial
Las 15 fórmulas básicas de Excel que todo el mundo debe conocer
tutorial
Visualización de datos en Excel
tutorial
Cómo utilizar un alias SQL para simplificar tus consultas
Allan Ouko
9 min
tutorial