BUSCARV en varias hojas de Excel

Generalmente recomiendo consolidar los datos en una sola hoja de Excel antes de utilizar la función BUSCARV, pero si por alguna razón esto no es posible y necesitas utilizar la función BUSCARV en varias hojas de Excel, entonces considera alguna de las alternativas que mostraré en este artículo.

Como sabemos, la función BUSCARV devuelve el error #N/A cuando no encuentra el valor que se está buscando, es por eso que la primer solución propuesta es la siguiente: Utilizar la función BUSCARV en la primera hoja, si obtenemos un error, entonces buscar en la segunda hoja. Si volvemos a obtener un error, entonces buscamos en la tercera hoja y así sucesivamente.

La función SI.ERROR

Para saber si la función BUSCARV ha devuelto un error podemos utilizar la función SI.ERROR que está disponible desde la versión de Excel 2007. El primer argumento de la función SI.ERROR es el valor que será evaluado y su segundo argumento es la acción a tomar en caso de obtener un error. Si deseamos realizar la búsqueda en dos hojas, entonces nuestra implementación seguirá la siguiente lógica:

BUSCARV en varias hojas de Excel

Esta no es la sintaxis de la fórmula, solo estoy ilustrando que el primer argumento de la función SI.ERROR será la búsqueda sobre la primera hoja y como segundo argumento haremos la búsqueda sobre la segunda hoja. El segundo argumento solo será ejecutado en caso de que la primera búsqueda resulte en error. Si en lugar de realizar la búsqueda sobre dos hojas necesitamos buscar en tres hojas, entonces necesitamos saber si la búsqueda sobre la segunda hoja nos devuelve un error y para eso volvemos a utilizar la función SI.ERROR lo cual nos lleva a tener una anidación de funciones de la siguiente manera:

VLOOKUP en varias hojas de Excel

Ahora hagamos un ejemplo para probar que nuestra lógica de solución propuesta funciona correctamente al buscar en varias hojas.

Función BUSCARV en varias hojas

En la siguiente imagen puedes observar tres tablas, cada una en hojas diferentes, que contienen una columna con el código de un libro y su título.

La función BUSCARV en varias hojas de Excel

Como primer ejemplo haremos una búsqueda sobre las primeras dos tablas. En una nueva hoja realizaré la búsqueda del título de un libro en base a su código el cual colocaré en la celda B1 y para ello utilizaré la siguiente fórmula:

=SI.ERROR(BUSCARV(B1,Hoja1!A2:B6,2,FALSO), BUSCARV(B1,Hoja2!A2:B6,2,FALSO))

Lo más importante a resaltar de esta fórmula es el rango de búsqueda especificado en ambas funciones BUSCARV. En ambas funciones hago la referencia precisa hacia la hoja donde deseo que se realice la búsqueda. Observa el resultado obtenido al aplicar esta fórmula a los datos:

Ejemplo de BUSCARV en varias hojas de Excel

Si por el contrario busco un código de producto que no existe en ninguna de las primeras dos tablas, entonces obtendré como resultado el error #N/A:

Excel BUSCARV a través de varias hojas

Ahora consideremos en nuestra búsqueda la información de la tercera hoja la cual contiene más códigos de producto. Para ampliar nuestra búsqueda a esa tercera hoja debo utilizar de nueva cuenta la función SI.ERROR como parte del segundo argumento de la primera función SI.ERROR de la siguiente manera:

=SI.ERROR(BUSCARV(B1,Hoja1!A2:B6,2,FALSO), SI.ERROR(BUSCARV(B1,Hoja2!A2:B6,2,FALSO), BUSCARV(B1,Hoja3!A2:B6,2,FALSO)))

Con esta modificación nuestra búsqueda se extiende a la tercera hoja y podremos saber si el código de producto buscado se encuentra en ella:

BUSCARV en dos hojas distintas

Si quisiéramos incluir una cuarta hoja en la búsqueda solo debemos utilizar de nueva cuenta la función SI.ERROR para validar los resultados de la tercera hoja y en caso de obtener un error volver a buscar en la cuarta hoja. Como sabemos, Excel 2007 y 2010 nos permiten anidar hasta 64 funciones por lo que ese sería el máximo de hojas que podríamos incluir utilizando este método.

Sin embargo, no te recomiendo llegar hasta ese límite ya que con solo agregar una o dos funciones anidadas más a nuestro ejemplo la fórmula incrementaría su complejidad y cada vez se volvería más difícil descubrir cualquier error. En caso de que necesites hacer búsquedas sobre una gran cantidad de hojas te recomiendo utilizar una macro ya que eso evitará la elaboración de una fórmula más compleja.

Buscar en varias hojas con una macro

La segunda alternativa que tenemos para buscar en varias hojas de Excel es utilizar una función definida por el usuario. Solo debemos ejecutar la función VLOOKUP (BUSCARV) en cada una de las hojas del libro sobre el rango especificado:

Function BUSCARVMultiple(Valor_buscado As Variant, Matriz_buscar_en As Range, _
	Indicador_columnas As Integer, Optional Ordenado As Boolean)

On Error Resume Next

For Each Hoja In ActiveWorkbook.Worksheets
	Matriz = Hoja.Range(Matriz_buscar_en.Address)
	Encontrado = WorksheetFunction.VLookup _
		(Valor_buscado, Matriz, _
		Indicador_columnas, Ordenado)

	If Not IsEmpty(Encontrado) Then Exit For
Next Hoja

Set Matriz = Nothing
BUSCARVMultiple = Encontrado

End Function

A continuación haré una explicación breve de este código. Los argumentos de la función BUSCARVMultiple son los mismos argumentos que utiliza la función BUSCARV comenzando por el valor buscado, la matriz de búsqueda, la columna que deseamos como resultado y finalmente el argumento ordenado.

En la línea 6 del código se inicia el recorrido por cada una de las hojas del libro y en la línea 7 obtenemos la dirección del rango sobre el cual se realizará la búsqueda. De inmediato ejecutamos la función VLOOKUP con los argumentos correspondientes y almacenamos el resultado en la variable Encontrado.  Es importante recordar que en VBA las funciones de Excel deben ser invocadas por su nombre en inglés y por esa razón usamos la instrucción WorksheetFunction.VLookup.

Finalmente en la línea 12 validamos si la variable Encontrado tiene algún valor. Si la variable no está vacía quiere decir que la función VLOOKUP encontró un resultado y por lo tanto terminamos la búsqueda. De lo contrario el ciclo se vuelve a repetir y continuamos la búsqueda en la siguiente hoja del libro. En la siguiente imagen puedes observar que la función recién implementada nos devuelve el mismo resultado que nuestra solución anterior la cual utilizaba funciones de Excel:

BUSCARV en múltiples hojas de Excel

Ahora ya conoces dos posibles soluciones para aquellos casos en los que necesites utilizar la función BUSCARV en varias hojas de Excel.