BUSCARV es una de las funciones más usadas en Excel y Sheets, pero a veces es difícil entenderla cuando no la conocemos
Hoy veremos en que consiste la función BUSCARV en Google Sheets, cuando debemos usarla, como se construye y sus limitaciones, así como errores comunes.
¿Qué es BUSCARV?
Como su nombre lo puede indicar, lo que hace BUSCARV es buscar un valor en un intervalo o rango de celdas. Así de simple.
La letra “v” se refiere a vertical, lo que quiere decir que es una búsqueda vertical, es decir que va a buscar el valor que le demos en todas las filas de una columna.
Pero empecemos de cero. Definamos de manera más completa BUSCARV.
BUSCARV busca un valor en la primera columna de un intervalo, y devuelve el valor correspondiente de otra columna de ese intervalo en esa misma fila
Descompongamos la definición para entenderla mejor
- BUSCARV busca un valor
Necesitamos entonces un valor, sea un texto, o un numero, que es lo que vamos a ir a buscar.
Ese va a ser nuestro primer argumento: el valor a buscar.
2. BUSCARV busca en un intervalo
Ahora necesitamos saber donde vamos a buscar. Para esto necesitamos un rango de mínimo una columna.
En la primera columna de este rango, es donde la función va a buscar el valor dado.
3. BUSCARV devuelve el valor de otra columna
Una vez encuentra el valor dado en la primera columna del intervalo, BUSCARV nos trae el valor de otra de las columnas.
Para saber que columna queremos “traer”, tenemos el tercer argumento el cual es un número mayor a 0 que me indica el número de la columna de donde me va a traer la información
4. Criterio de ordenación
Por ahora no nos vamos a meter con este argumento, siempre vamos a dejar 0 sabiendo que BUSCARV nos traerá la información de la primera instancia encontrada del valor buscado.
Cómo se construye el BUSCARV en Google Sheets
Ya conociendo los elementos del BUSCARV, podemos construir nuestra función.
Veamos el BUSCARV en acción!
=BUSCARV(A1;C1:E10;2;0)
El primer argumento, en este caso “A2” es el valor que vamos a buscar
El segundo argumento, en este caso “C1:E10” es el intervalo donde vamos a buscar, teniendo en cuenta que va a buscar el valor de “A2” en la columna C.
El tercer argumento es 2, quiere decir que una vez encuentre el valor en el intervalo, va a traer lo que esté en esa fila (donde encontró el valor), pero en la columna 2
El último, lo único que va a hacer es respetar que nos devuelva la fila donde primero encuentre el valor.
Limitaciones del BUSCARV en Google Sheets
Cuando uno empieza a trabajar esta función, queda maravillado de lo que hace.
Sin embargo, a medida que se usa cada vez más vemos que no funciona en todos los casos, y que hay que tener en cuenta ciertas cosas como:
- El valor buscado siempre se busca en la primera columna, lo que significa que el valor a devolver siempre tiene que estar en una columna a la derecha del valor buscado. Siempre.
- Siempre va a devolver el primer valor encontrado, lo que funciona muy bien para tablas donde la primera columna es una llave, es decir que tiene valores que no se repiten, pero es un reto cuando necesite el último valor, o el segundo, o el valor n.
- El argumento de la columna siempre es un valor numérico, es decir que siempre tengo que contar el número de la columna donde esta la información. Entonces si cambio esa columna de lugar, tengo que modificarlo en la formula. Esto tambien la hace poco “arrastrable” o “copiable”, cuando tengo que buscar varios valores de distintas columnas
Errores más comunes en BUSCARV
Como ya lo mencionamos, BUSCARV es una excelente función, sin embargo hay que tener cuidado con algunos errores que nos pueden salir cuando estamos empezando a utilizarla. Algunos de los más comunes son:
No encuentra el valor porque no hay coincidencias!
No encuentra el valor pero porque estamos dandole la columna equivocada
No encuentra el valor porque los tipos de valores don diferentes
No encuentra el valor porque no bloqueamos nuestro rango de busqueda
Aquí pueden ver un artículo más detallado de como identificar y solucionar los errores en BUSCARV.
BUSCARV con dos criterios en Google Sheets
BUSCARV es una fórmula muy útil y fácil de aprender a usar, pero cuenta con algunas limitaciones.
Aquí encuentran un tutorial entero de BUSCARV
Y aquí un artículo de las limitaciones de BUSCARV y como extender la función
Una de sus limitaciones es cuando queremos buscar algo por dos, tres o más valores.
Normalmente el primer argumento de BUSCARV permite un solo valor, el cual va a buscar en una sola columna
Hoy te voy a enseñar varias formas para solucionar este problema.
Miremos la siguiente base de ejemplo:

La función BUSCARV busca la primera instancia de algún valor, digamos por ejemplo que vamos a buscar una venta del Cliente C. La función quedaría así:
=BUSCARV(A2;Datos!A:F;6;0)

Donde A2 es el valor que vamos a buscar, Datos!A:F es la base donde vamos a buscar el valor, y la columna 6 es de donde vamos a traer la respuesta. El 0 solo se refiere a que la búsqueda es exacta.
Pero ahora que pasa si queremos buscar la primera instancia del Cliente C en 2019? No lo podemos hacer con el BUSCARV como lo conocemos.
Vamos a ver algunos métodos para poder hacerlo
BUSCARV con columna auxiliar
Un primer método usa una columna adicional que es la mezcla de los dos valores.
En el caso del ejemplo sería la mezcla del cliente y el año.
Nota: Es muy importante que esta columna sea la primera.
Entonces, agregaríamos una nueva columna al principio de nuestra base, así:

Le ponemos cualquier nombre, como “Referencia” o “Cliente + Año”
Ahora ingresamos la siguiente formula
=B2&E2
Donde “B” es la donde está el cliente y “E” donde está el año.
Ahora arrastramos la formula hasta el final de la base (Con doble click sobre el cuadro de la esquina inferior derecha)

En la siguiente hoja, queremos buscar la primera venta de ese cliente y ese año, así:

Ahora el argumento de nuestro BUSCARV debe ser la concatenación del cliente y el año. Esto se puede hacer con la función “CONCATENAR” o “CONCAT”, o, más fácil con el símbolo “&”.
Así quedaría nuestro BUSCARV:
=BUSCARV(A2&B2;Datos!A:G;7;0)

Y esto lo podríamos hacer con 3, 4 o más argumentos, siguiendo la misma fórmula:
- Concatenas las columnas en la primera columna de la base
- Concatenas el valor de búsqueda del primer argumento del BUSCARV con &
Puede que no sea la solución más elegante, pero es una forma fácil de solucionar ese problema.
Variante 2: Agregando la columna al final
Si no es posible agregar la columna al principio, la podemos agregar al final, y hacer otro truco con el BUSCARV para simular que esta última columna es en realidad la primera.
Así se vería

Para que nuestro BUSCARV “crea” que la primera columna es la G, vamos a crear un arreglo, que se vería así:
={Datos!G1:G/Datos!F1:F}
Como solo necesitamos las ventas no necesitamos más columnas
En este nuevo arreglo “virtual” la columna 1 sería la nueva referencia, y la columna 2 serían las ventas, entonces el BUSCARV quedaría
=BUSCARV(A2&B2;{Datos!G1:G/Datos!F1:F};2;0)
Opción 2: Usando una tabla virtual concatenada
YA vimos pistas de como podríamos hacer para no necesitar la columna auxiliar, ya que la podemos crear de manera “virtual”
Si se acuerdan, la fórmula para concatenar era =B2&E2 cuando creamos la columna al principio, y =A2&D2 cuando la agregamos al final. Como no vamos a agregar nada, dejamos esta última
Usando ArrayFormula podemos tomar esa concatenacion y hacer una tabla, quedaría si:
=ArrayFormula(A2:A;D2:D)
Por ahora vamos a reemplazar esa ultima columna por esta formula. Se vería asi

Si hacemos algo parecido a lo del ultimo método, podemos adjuntar las ventas a la derecha así:
={ArrayFormula(A2:A&D2:D)\F2:F}
Ahora podemos icluir esa ultima formula como el rango de busqueda. Quedaría así:
=BUSCARV(A2&B2;{ArrayFormula(Datos!A2:A&Datos!D2:D)\Datos!F2:F};2;0)

Extendiéndolo a 3 o 4 variables
Lo bueno de cualquiera de este último método es que es muy fácil expandirlos a 3 o 4 criterios. Para esto:
- En el ArrayFormula concatenan todas las columnas que deseen en el orden que deseen
- En el primer argumento del BUSCARV también concatenan todas las variables, asegurándose que estén en el mismo orden que la tabla
Opción 3: FILTER + INDICE
Estamos haciendo trampa porque no vamos a usar BUSCARV, sino otra función, pero vamos a hacer lo mismo, y sin necesidad de incluir una columna adicional
Lo único es que me va a traer toda la fila, entonces tenemos que también incluir un INDICE para escoger la columna adecuada
FILTER es una función que me trae las filas correspondientes de acuerdo a una o más condiciones.
Aquí pueden aprender todo acerca de FILTER
Entonces siguiendo con nuestro ejemplo, primero busquemos todos los registros del cliente C
=filter(Datos!B:G;Datos!B:B=A2)

Podemos incluir más condiciones. En nuestro caso, el año
=filter(Datos!B:G;Datos!B:B=A2;Datos!E:E=B2)

Aquí todo acerca de la función INDICE
Básicamente la función indice tiene 3 argumentos:
- El rango
- La fila
- La columna (opcional)
Como queremos la primera fila y la sexta columna (Ventas), entonces vamos a usar la función INDICE para la fila 1 (Primera Venta) y Columna 6
=INDICE(FILTER(Datos!B:G;Datos!B:B=A2;Datos!E:E=B2);1;6)

Lo interesante de este método, aparte del hecho de no necesitar la columna auxiliar, es que muy fácilmente podríamos, ir por la segunda o por la tercera venta.
Simplemente cambiamos el número de la fila en el INDICE por el que queremos
Por ejemplo con el siguiente cambio, traigo la segunda venta
=INDICE(FILTER(Datos!B:G;Datos!B:B=A2;Datos!E:E=B2);2;6)
Y si quiero la última, tengo que agregar una fórmula adicional, la función FILAS, que va a contar cuantas instancias de ventas para las condiciones dadas hay
Así quedaría nuestra fórmula
=INDICE(FILTER(Datos!B:G;Datos!B:B=A2;Datos!E:E=B2);FILAS(FILTER(Datos!B:G;Datos!B:B=A2;Datos!E:E=B2));6)

Conclusión
Teniendo en cuenta lo anterior, BUSCARV es una excelente función cuando estamos aumentando nuestras habilidades en hoja de cálculo, y nos va a ser extremadamente útil en muchos casos.
BUSCARV es una función versátil pero hasta cierto punto. Cuando queremos hacer cosas un poco más avanzadas, hay trucos que podemos adicionar al BUSCARV o funciones alternas para lograrlas.
Aquí pueden ver muchas formas para extender las funcionalidades del BUSCARV
Gracias Juan por tan excelente información. Entre las opciones de buscarv, sé que es posible en la zona del intervalo donde se debe buscar, colocar el nombre de un intervalo con nombre y funciona bien, pero, entrando en el llano de las especulaciones, si el nombre de ese intervalo, es escrito como una referencia en cualquier celda por alguna razón, ¿sabes si es posible hacer alusión a ese valor desde buscarv y que la función lo interprete no como una celda donde buscar, sino como el rango al que hace alusión esa celda? Gracias por cualquier mención al respecto.
Hola Carlos
Mil gracias por tus palabras y tu pregunta.
No se si te entiendo bien.
Hablas de algo así como una doble referencia?
Yo creo que con indirecto podriamos hacer algo, pero no estoy seguro.
Si tienes el caso específico enviame un pantallazo o un link y lo miramos!
Un gran saludo!