Hacer que BUSCARV calcule más rápido en Excel con truco de doble BUSCARV

En mi trabajo diario uso la función BUSCARV casi de manera obligatoria. Esta función siempre me ha sacado de apuros en muchas situaciones. El problema surge cuando tengo que buscar valores dentro de rangos de miles de filas o incluso dentro de cientos de miles de filas. Si te has enfrentado a esta situación te habrás dado cuenta que en ocasiones el cálculo de la función BUSCARV puede tardar incluso minutos.

Por qué tarda en calcular BUSCARV en miles de filas (usando coincidencia exacta)

Si un cálculo de la función BUSCARV tanta mucho tiempo, la razón se encuentra en el parámetro Ordenado. En la mayoría de las ocasiones usamos el 0 o FALSO en el parámetro Ordenado, y esto es porque así no importa si nuestros datos están desordenados, siempre nos devolverá el valor correcto, pero cuando usamos el parámetro 0 provocamos que la búsqueda sea fila por fila, y cuando tenemos miles o cientos de miles de filas, un cálculo puede demorar mucho tiempo.

Usando BUSCARV con datos desordenados:

=BUSCARV(valor, matriz, columna, FALSO)

En mis pruebas, una búsqueda de 10,000 registros sobre una matriz de 100,000 registros demoró 5.21 segundos.

Usando BUSCARV con coincidencia exacta

Figura 1. Usando BUSCARV con coincidencia exacta.

Ver video Hacer que BUSCAR calcule más rápido

Optimizar BUSCARV usando búsqueda binaria (coincidencia aproximada)

Cuando nos referimos a búsqueda binaria, queremos indicar que el parámetro Ordenado deber ser 1 o VERDADERO, así la búsqueda se hace en datos ordenados y el cálculo es mucho, pero mucho más rápido.

El problema de usando coincidencia aproximada

Si bien la búsqueda binaria o de coincidencia aproximada es mucho más rápida que la coincidencia exacta, nos topamos con una situación al momento de usarla. BUSCARV con coincidencia aproximada busca al centro de los datos y devuelve el valor buscado. Hasta aquí todo va bien, pero cuando el valor no se encuentra en la tabla o rango, devuelve el valor más cercano, el cual no es el valor que deseamos obtener (a menos que tengamos un ejemplo como éste).

El truco para optimizar BUSCARV usando doble BUSCARV

Aquí lo que deseamos es que BUSCARV se comporte como si usáramos coincidencia exacta, pero que el cálculo demore mucho menos. Para esto, usaremos un truco que consiste en usar dos funciones BUSCARV, además de usar ambas con coincidencia aproximada.

Nota: Para usar el truco de los dos BUSCARV los datos de matriz_buscar_en deben estar ordenados de la A a la Z.

Antes de mostrarte la fórmula te voy a explicar cómo funciona: SI el valor buscado se encuentra en la matriz a buscar (primer BUSCARV), con eso nos aseguramos que el valor existe, y si existe entonces buscaremos el valor en la matriz y devolveremos el valor de la columna indicada (segundo BUSCARV), al final, si el valor no se encuentra, entonces devolvemos el texto “No existe”. A continuación la fórmula:

=SI(BUSCARV(valor,matriz,columna,VERDADERO)=valor,BUSCARV(valor,matriz,columna,VERDADERO),”No existe”)

En mis pruebas, una búsqueda de 50,000 filas sobre una matriz de 100,000 filas, sólo demoró 0.9 segundos.

Usando truco de los 2 BUSCARV, optimizando el cálculo en 100x.

Figura 2. Usando truco de los 2 BUSCARV, optimizando el cálculo en 100x.

Conclusión

En situaciones normales, usando BUSCARV con coincidencia exacta nos funciona bien, pero cuando tenemos miles de filas a calcular y no deseamos perder tiempo esperando a que termine de calcular, entonces usamos el truco del doble BUSCARV.

Descarga el archivo de ejemplo

Descargar el ejemplo Buscarv Optimizado con truco de 2 BUSCARV.rar

Más ejemplos de BUSCARV

Buscar valores hacia la izquierda en Excel. Aprende BUSCARV, COINCIDIR e INDICE

BUSCARV en varias hojas de Excel. Regalo: UDF BuscarvMix

Uso de BUSCARV con coincidencia aproximada en Excel

Rango de búsqueda dinámico para BUSCARV usando INDIRECTO en Excel

También te podría gustar...