La función BUSCAR, es una de las funciones de búsqueda y referencia, y, nos permite buscar un valor en una matriz, y, devolver el resultado de otra matriz.
Sintaxis
BUSCAR(valor buscado; vector de comparación; [vector resultado])
· valor buscado, es un argumento obligatorio. Es el valor vamos a buscar, puede ser un número, texto, o, un valor lógico.
· Vector de comparación, es un argumento obligatorio. Es el rango donde vamos a buscar el argumento valor buscado.
· vector_resultado, es un argumento opcional. Es el rango de donde vamos a rescatar el valor, que coincida con el argumento valor buscado, en caso de omitir este argumento, el valor devuelto, será del mismo rango, donde se busca el argumento valor buscado.
Veamos algunos ejemplos.
Tenemos los siguientes datos, son salarios de una serie de personas.
Tenemos una serie de porcentajes, que va a depender del salario de cada persona.
Vamos a usar la función BUSCAR, para encontrar dicho porcentaje.
En la celda C2, escribimos el signo igual, seguido del nombre de la función, y, abrimos un paréntesis.
=BUSCAR(
Como argumento valor buscado, señalamos la celda B2, que es la primera cantidad, esta referencia, no la vamos a fijar, para que al copiar se actualice.
=BUSCAR(B2;
El siguiente argumento es, vector de comparación, es decir, el rango donde vamos a buscar el argumento valor buscado, pues, señalamos desde E2 hasta E5, y, lo fijamos con F4, para que al copiar no se actualice.
=BUSCAR(B2;$E$2:$E$5;
El siguiente argumento es vector resultado, que es el rango de donde vamos a obtener el resultado, pues señalamos desde F2 a F5, y, lo fijamos con F4, para que tampoco se actualice al copiar.
Cerramos paréntesis, y, aceptamos.
=BUSCAR(B2;$E$2:$E$5;$F$2:$F$5)
Vemos que para la primera cantidad, nos devuelve un porcentaje del 5%, es decir, esta entre 500 y 1000.
Vamos a arrastrar.
Vemos que tenemos los porcentajes correctos, por ejemplo, para la cantidad 2532, nos devuelve el 15%, porque esta entre 2000, y, 3000.
Hemos obtenido los resultados correctos, debido a que el rango de cantidades de porcentajes, esta ordenado de manera ascendente.
Veamos el mismo ejemplo, pero las cantidades de porcentajes no están ordenadas.
En la celda C11, escribimos el signo igual, seguido del nombre de la función, y, abrimos un paréntesis.
=BUSCAR(
Como primer argumento, valor buscado, señalamos la celda B11.
=BUSCAR(B11;
Como argumento vector de comparación, señalamos desde E11 hasta E14, y, lo fijamos con F4, para que no se actualice.
=BUSCAR(B11;$E$11:$E$14;
Como argumento, vector resultado, señalamos desde F11 hasta F14, pulsamos, de nuevo, F4, para que no se actualice.
Cerramos paréntesis, aceptamos, y, arrastramos.
=BUSCAR(B11;$E$11:$E$14;$F$11:$F$14)
Obtenemos el 5% para todas las cantidades.
Esto es debido a que las cantidades de porcentajes no están ordenadas, de manera ascendente.
Pues, vamos a seleccionar las cantidades de porcentajes, y, ordenamos de manera ascendente, para ello, vamos a la pestaña datos, entro del grupo, ordenar y filtrar, hacemos clic en:
Vemos, como ahora, los porcentajes son correctos.
BUSCARV
Esta función la usamos para cuando queremos buscar un valor dentro de un rango, y, que nos devuelva otro valor, también, dentro del rango.
Con la función BUSCARV, el valor a buscar debe de estar en vertical.
Sintaxis
BUSCARV (valor_buscado; matriz_buscar_en; indicador_columnas; [ordenado])
Valor buscado, es un argumento obligatorio, es el valor que deseamos buscar. El valor debe estar en la primera columna del rango de celdas que especifiquemos en el argumento matriz_tabla.
Si el argumento valor_buscado abarca las celdas C1:F10, el argumento valor_buscado debe estar en la columna C, por que la columna de búsqueda es la primera columna donde empezar a solicitar columnas devueltas, por ejemplo, si el valor de búsqueda esta en la columna D, no podremos pedirle información de la columna C.
· El argumento valor_buscado puede ser un valor o una referencia a una celda.
· Matriz_tabla, es un argumento obligatorio, es el rango de celdas en donde se buscará el argumento valor_buscado. Puede usar un rango con nombre o una tabla, y puede usar nombres de rangos en el argumento en lugar de referencias de celda.
· Indicador de columnas, es un argumento obligatorio, es el número de columna a devolver, a partir de la primera columna situada más a la izquierda de matriz_tabla.
· Rango, es un argumento opcional, es un valor lógico que especifica si desea que BUSCARV busque una coincidencia exacta o aproximada.
o Coincidencia aproximada - 1/TRUE da por sentado que la primera columna en la tabla está ordenada, ya sea alfabética o numéricamente, y buscará el valor más próximo. Este es el método predeterminado si no especificamos uno.
o Coincidencia exacta - 0/FALSE busca el valor exacto en la primera columna.
Veamos un ejemplo.
Tenemos los siguientes datos:
Queremos poner un código, y, que nos devuelva los datos de dicho código.
En la celda I5, vamos a poner un código, en las celdas adyacentes quiero que me aparezca los datos del código.
Por lo que nos colocamos en la celda J5, y, escribimos =BUSCARV
El primer argumento es valor_buscado, que en este caso es el código que ponemos en I5.
=BUSCARV(I5
Punto y coma, el siguiente argumento es Matriz_tabla, que es el rango donde queremos buscar, pues, seleccionamos nuestra matriz, o, rango.
=BUSCARV(I5;B5:G14
Punto y coma, el siguiente argumento es indicador de columnas, pues, ponemos la columna 2.
=BUSCARV(I5;B5:G14;2
Punto y coma, el siguiente argumento es orden, donde vemos que se abre una ventana, seleccionamos coincidencia exacta, o, podemos poner directamente FALSO.
Cerramos paréntesis.
=BUSCARV(I5;B5:G14;2;FALSO)
Aceptamos, y, vemos que nos devuelve Coca Cola, que es el código 102.
Arrastramos hacia la derecha, pero antes debemos de fijar la celda I5, y, el rango B5:G14, para que al arrastrar no se actualice.
=BUSCARV($I$5;$B$5:$G$14;2;FALSO)
Arrastramos hacia la derecha, y, tenemos todos los datos para el código 102.
Pero, vemos que en todas las celdas tenemos Coca Cola, eso es porque debemos de ir cambiando el argumento numero de columna, si no lo queremos cambiar manualmente, encima de cada encabezado creamos un contador con el número de columnas.
Para ello, en la celda I3, voy a poner el número uno, selecciono la celda y arrastro hacia la derecha hasta la última columna.
Dentro de la pestaña de inicio, y, dentro del edición, desplegamos rellenar y elegimos series, una vez se abra la ventana.
Hacemos clic en aceptar, y, ya tenemos nuestro contador.
Vamos a la celda J5, y, cambiamos el argumento numero de columna, por el valor de la celda J3, la cual dejamos en relativa, para que al arrastrar se actualice.
=BUSCARV($I$5;$B$5:$G$14;J3;FALSO)
Arrastramos y ahora si tenemos los datos que corresponde al código 102.
Si cambiamos de código, veremos que tenemos los resultados correctos.
También, podemos crear una lista desplegable a través de una validación de datos para seleccionar un código, de esa manera, nunca nos equivocaremos al introducir un código, para ello, en la celda I5, vamos a la pestaña de datos, dentro de herramientas de datos, hacemos clic en validación de datos.
Desplegamos permitir, y, seleccionamos lista, en la ventana origen, seleccionamos los códigos.
Aceptamos, y, ya tenemos nuestra lista desplegable.
Lo siguiente lo veremos en el tema de matrices desbordadas, pero es simple, y, creo que puede venir bien.
¿Qué ocurre si quiero que BUSCARV me devuelva la columna 3, y, 5?
Tenemos lo que se conoce como una constante de matriz, que genera una matriz de valores en vertical, o, en horizontal.
Por ejemplo, con la siguiente sintaxis:
={1\2\3}
Creamos una matriz de tres columnas con los valores 1, 2, y 3.
Con la siguiente sintaxis, creamos un matriz de tres filas, con los números 1, 2, y 3.
={1;2;3}
Vemos que la diferencia de que aparezca en horizontal, o, en vertical, es el delimitador, cuando usamos la barra inclinada hacemos referencia a columnas, y, cuando usamos como delimitador el punto y coma, hacemos referencia a filas.
Pues, en una celda copiamos y pegamos la expresión del ejemplo anterior.
Eliminamos el argumento indicador de columna, y, en su caso, abrimos unas llaves, ponemos el numero 3, junto con la barra inclinada, porque queremos que nos devuelva una columna, ponemos el numero 5, y, cerramos las llaves.
=BUSCARV($I$5;$B$5:$G$14;{2\5};FALSO)
Vemos que obtenemos dichas columnas.
Veamos un problema que presenta BUSCARV, queremos buscar el precio 1,50 en la columna precio, dicho precio no se encuentra.
En la celda E5, ponemos BUSCARV, como argumento valor buscado, es el valor de la celda D5, como argumento matriz_tabla, seleccionamos los valores, como argumento indicador de columnas, ponemos 1, porque solo tenemos una columna, y, como argumento orden, seleccionamos coincidencia aproximada, o, ponemos directamente VERDADERO.
=BUSCARV(D5;B5:B14;1;VERDADERO)
Como resultado, nos devuelve 0,45, que no es el valor más aproximado a 1,50.
Esto sucede porque los valores no están ordenados de manera ascendente, vamos a seleccionar los valores, vamos a la pestaña datos, dentro de ordenar y filtrar, hacemos clic en:
Podemos ver como ahora sí, tenemos el valor más aproximado.
Debemos de tener esto en cuenta, si estamos trabajando con un modelo con muchas filas, y, usamos BUSCARV para encontrar un valor, si no está ordenado de manera ascendente, puede ser que el resultado obtenido no sea el correcto.
Ahora, tenemos una lista de producto de 2021, y, otra de 2022.
Queremos saber que productos en la lista de productos de 2021, ya no se encuentran en la lista de 2022.
En este caso, volvemos a usar BUSCARV, pero solo tenemos una columna a comparar, y, sigue siendo una coincidencia exacta.
En la celda F5, ponemos BUSCARV, como argumento valor buscado, seleccionamos la celda B5, que es el primer producto de la lista de 2021.
=BUSCARV(B5
Punto y coma, como argumento matriz_tabla, seleccionamos los productos de la lista de 2022.
=BUSCARV(B5;D5:D14
Punto y coma, como argumento indicador de columnas, ponemos 1.
=BUSCARV(B5;D5:D14;1
Punto y coma, como argumento orden, ponemos coincidencia exacta.
Cerramos paréntesis.
=BUSCARV(B5;D5:D14;1;FALSO)
Aceptamos, y, vemos que leche, se encuentra en la lista de 2021.
Fijamos las celdas:
=BUSCARV(B5;$D$5:$D$14;1;FALSO)
Arrastramos, y, vemos que nos devuelve error donde el producto ya no se encuentra en la lista de 2021.
Podemos hacer lo siguiente, ver los productos descatalogados, o, que aparezca descatalogado donde aparezca error.
Lo haremos de las dos formas.
Primero, queremos ver los productos descatalogados, para ello, usamos el condicional SI, donde preguntamos que, si el resultado de BUSCARV es error, cosa que haremos con la función ESERROR.
=SI(ESERROR(BUSCARV(B5;$D$5:$D$14;1;FALSO)
En ese caso, que devuelva la celda D5.
=SI(ESERROR(BUSCARV(B5;$D$5:$D$14;1;FALSO));D5
En caso contrario, que ponga un texto en blanco.
Cerramos paréntesis.
=SI(ESERROR(BUSCARV(B5;$D$5:$D$14;1;FALSO));D5;"")
Aceptamos, y, arrastramos.
Vemos los productos que ya no se encuentran en la lista de 2021.
Ahora, vamos a mostrar los productos catalogados, la expresión es la misma, solo delante de ESERROR, debemos de poner la función NO, lo cual invierte el resultado de ESERROR.
=SI(NO(ESERROR(BUSCARV(B5;$D$5:$D$14;1;FALSO)));D5;"")
Aceptamos, arrastramos, y, tenemos los productos catalogados.
En el siguiente ejemplo, tenemos una serie de nombres con sus códigos, apellidos y número de teléfono.
Queremos introducir un código, pero si ese código no existe, debe de devolver código no existe, en caso, contrario, que devuelva el segundo apellido.
En la celda C13, ponemos BUSCARV, como argumento valor buscado, seleccionamos la celda B13.
=BUSCARV(B13
Punto y coma, como argumento matriz_tabla, seleccionamos el rango de datos.
=BUSCARV(B13;B4:F9
Punto y coma, como argumento indicador de columnas, ponemos 4.
=BUSCARV(B13;B4:F9;4
Punto y coma, como argumento rango, seleccionamos coincidencia exacta.
Cerramos paréntesis.
=BUSCARV(B13;B4:F9;4;FALSO)
Aceptamos, y, tenemos el apellido para el código 1000.
¿Y si no se encuentra el código que pongamos?
Pues, vamos a hacer uso del condicional SI y de la función ESNOD, esta función nos avisa si hay un error #N/A.
Preguntamos si es error #N/A el resultado de BUSCARV.
=SI(ESNOD(BUSCARV(B13;B4:F9;4;FALSO))=VERDADERO
Punto y coma, en ese caso, que ponga Código no existe.
=SI(ESNOD(BUSCARV(B13;B4:F9;4;FALSO))=VERDADERO;"Código no existe"
En caso contrario, que ejecute BUSCARV.
Cerramos paréntesis.
=SI(ESNOD(BUSCARV(B13;B4:F9;4;FALSO))=VERDADERO;"Codigo no existe";BUSCARV(B13;B4:F9;4;FALSO))
Aceptamos, ponemos un código que no existe, y, vemos que aparece Código no existe.
Veamos otro ejemplo.
Tenemos los siguientes datos.
Queremos elegir un código, y, que nos devuelva el encabezado que elijamos, es decir, nombre, apellido1, apellido2, o, teléfono.
Por ejemplo, si elegimos el código 1120 y el encabezado apellido1, debe de devolver Gómez.
Vamos a crear una lista desplegable a través de una validación de datos para elegir el código, y, otra para elegir el encabezado.
En la celda B12, vamos a la pestaña de datos, dentro de herramientas de datos, hacemos clic en validación de datos, en la ventana permitir, seleccionamos lista, y, en la ventana origen, seleccionamos los códigos.
Aceptamos, seleccionamos un código.
Creamos otra lista desplegable, y, seleccionamos los encabezados, excepto el encabezado código.
Seleccionamos un encabezado.
Queremos obtener el teléfono del código 1120.
Debemos de encontrar la posición del encabezado seleccionado, para ello, usamos COINCIDIR, donde como argumento valor buscado, seleccionamos la celda D12.
=COINCIDIR(D12
Punto y coma, como argumento matriz buscada, seleccionamos los encabezados.
=COINCIDIR(D12;B3:F3
Punto y coma, seleccionamos coincidencia exacta.
Cerramos paréntesis.
=COINCIDIR(D12;B3:F3;0)
Aceptamos, y, obtenemos la posición 5.
Quiere decir que en este caso al argumento indicador de columnas de la función BUSCARV va a ser 5, pero de esta manera lo hacemos dinámico, quiere decir que cuando elijamos otro encabezado, la función COINCIDIR nos dará su posición, por lo que la función BUSCARV quedaría de la siguiente manera:
=BUSCARV(B12;B4:F9;COINCIDIR(D12;B3:F3;0);0)
Vemos que tenemos el resultado correcto.
Si cambiamos de código, vemos que el resultado es correcto.
Sabemos que BUSVARV, cuando buscamos un valor dentro de un rango, y, dicho valor aparece más de una vez, cuando encuentra la primera coincidencia se para, y, deja de buscar.
Tenemos le siguiente modelo:
Queremos ver los centros comerciales donde ha vendido la provincia de Sevilla.
Si buscamos Sevilla en el modelo de datos, indicamos que nos devuelva la columna 2, con una coincidencia exacta.
=BUSCARV("Sevilla";A3:B23;2;FALSO)
Vemos que nos devuelve la primera coincidencia.
Pero, queremos ver todos los centros donde ha vendido Sevilla, volvemos a la función, cambiamos el argumento matriz_tabla por A2:B2, es decir, que busque solo en la fila 2.
=BUSCARV("Sevilla";A2:B2;2;FALSO)
Arrastramos, y, vemos que donde hay coincidencia, aparece el centro, y, donde no hay coincidencia, aparece un error.
Pero, tenemos lo que buscamos, para quitar el error, después del signo igual, usamos SI.ERROR, donde como argumento valor, es la función BUSCARV.
=SI.ERROR(BUSCARV("Sevilla";A2:B2;2;FALSO)
Punto y coma, como argumento valor si error, ponemos un texto en blanco.
Cerramos paréntesis.
=SI.ERROR(BUSCARV("Sevilla";A2:B2;2;FALSO);"")
Arrastramos, y, ya no vemos los errores.
Veamos otro ejemplo, tenemos los siguientes datos:
Vemos que hay apellidos que se repiten, como Franco y Garcia.
Queremos que, si escribimos, por ejemplo, Emilio Garcia.
Devuelva el ID de empleado, pero, tenemos el problema que Garcia aparece dos veces, y queremos el ID de empleado del segundo Garcia.
BUSCARV, no lo podemos usar, primero, porque BUSCARV cuando encuentre la primera coincidencia se para y no sigue buscando, y, segundo porque la columna que queremos que nos devuelva se encuentra a la izquierda de la columna de búsqueda, y, BUSCARV no lo permite.
¿Bien, y, si creo una columna auxiliar donde uno el nombre y el apellido?
Insertamos una columna nueva en la columna A, y, concatenamos.
=C2&D2
Arrastramos.
Como es la primera columna de búsqueda, podemos pedir que nos devuelva columnas de la derecha, en la celda F2, ponemos BUSCARV, como argumento valor buscado, concatenamos F2, y, G2, que es el nombre y apellido para buscar.
=BUSCARV(F2&G2
Punto y coma, como argumento matriz_tabla, seleccionamos desde A2 a D11.
=BUSCARV(F2&G2;A2:D11
Punto y coma, como argumento indicador de columna, ponemos 2.
=BUSCARV(F2&G2;A2:D11;2
Punto y coma, como argumento rango, seleccionamos coincidencia exacta.
Cerramos paréntesis.
=BUSCARV(F2&G2;A2:D11;4;FALSO)
Aceptamos, y, vemos como tenemos el ID de empleado para Emilio Garcia.
Veamos ahora la función BUSCARH, esta función tiene los mismos argumentos que la función BUSCARV, lo único que cambia es el argumento indicador de columna, que, en este caso, es indicador de fila, cuando hemos visto BUSCARV, cuando hemos buscado un valor dentro de una matriz o rango, hemos indicado una columna a devolver, pues, en la función BUSCARH, debemos de indicar una fila a devolver.
Tenemos los siguientes datos:
Queremos que, al introducir un código, devuelva el nombre, apellido1, apellido2, y, teléfono.
En la celda C11, vamos a introducir un código.
En la celda C12, ponemos BUSCARH, como primer argumento, valor buscado, seleccionamos la celda C11.
=BUSCARH(C11
Punto y coma, como argumento matriz_tabla, seleccionamos el modelo.
=BUSCARH(C11;C4:H8
Punto y coma, como argumento indicador de filas, ponemos 2.
=BUSCARH(C11;C4:H8;2
Punto y coma, como argumento ordenado, seleccionamos coincidencia exacta.
Cerramos paréntesis.
=BUSCARH(C11;C4:H8;2;FALSO)
Aceptamos, y, nos devuelve el nombre para el código 1120.
Ahora, debemos de arrastrar e ir cambiando el argumento indicador de filas, pero como hicimos con BUSCARV, vamos a crear un contador, para ello, en la celda A11, ponemos el valor 1.
Seleccionamos desde A11 a A15.
Vamos a la pestaña de inicio, dentro de edición, desplegamos rellenar, y, seleccionamos series.
Se abre la ventana series.
Solo tenemos que aceptar.
Vamos a la celda C12, cambiamos el valor indicador de filas por el valor de la celda A12.
=BUSCARH(C11;C4:H8;A12;FALSO)
Aceptamos, fijamos la siguiente referencia.
=BUSCARH($C$11;$C$4:$H$8;A12;FALSO)
Arrastramos, y, tenemos los valores para el código 1120.
Si cambiamos de código, veremos que el resultado es correcto.
Veamos otro ejemplo, tenemos los siguientes datos.
Vamos a seleccionar un empleado, y, queremos ver de qué turno se encuentra.
En la celda B11, vamos a crear una lista desplegable a través de una validación de datos, para seleccionar un empleado, para ello, vamos a la pestaña datos, dentro de herramientas de datos, hacemos clic en validación de datos, desplegamos permitir, y, seleccionamos lista, y, en la ventana origen, seleccionamos los empleados.
Aceptamos, seleccionamos un empleado.
En la celda C11, ponemos BUSCARH, como argumento valor buscado, seleccionamos la celda C2.
=BUSCARH(C2
Punto y coma, como argumento matriz_tabla, seleccionamos el modelo.
=BUSCARH(C2;C3:C8
Punto y coma, para el argumento indicador de filas, debemos de usar COINCIDIR, para encontrar el empleado seleccionado en el rango de empleados.
=BUSCARH(C2;C3:C8;COINCIDIR(B11;B3:B8;0)
Punto y coma, como argumento ordenado, seleccionamos coincidencia exacta.
Cerramos paréntesis.
=BUSCARH(C2;C3:C8;COINCIDIR(B11;B3:B8;0);FALSO)
Aceptamos, y, vemos que obtenemos un blanco, porque el trabajador seleccionado, empleado4, no está de mañana.
Después del signo igual ponemos la función ESBLANCO, que nos devolverá VERDADERO si es blanco, y, FALSO si no lo es.
=ESBLANCO(BUSCARH(C2;C3:C8;COINCIDIR(B11;B3:B8;0);FALSO))
Vemos que nos devuelve VERDADERO.
Preguntamos que, si el resultado de ESBLANCO es igual a VERDADERO, pero no tenemos que poner VERDADERO, porque de forma predeterminada, comparara con VERDADERO.
=SI(ESBLANCO(BUSCARH(C2;C3:C8;COINCIDIR(B11;B3:B8;0);FALSO))
En ese caso, debe de poner tarde, en caso contrario, debe de poner mañana.
=SI(ESBLANCO(BUSCARH(C2;C3:C8;COINCIDIR(B11;B3:B8;0);FALSO));"Tarde";"Mañama")
Vemos que, para el empleado4, nos devuelve turno de tarde.
Si cambiamos de empleado, veremos el turno correcto.
Miguel Angel Franco Garcia
Comments