Vamos a ver un ejemplo, de la función BUSCARX, para este ejemplo, vamos a calcular los totales por productos, pero tenemos el inconveniente de que los algunos productos no están bien escritos, porque están separados por un espacio, después, haremos lo mismo pero con la función LAMBDA, y, veremos las diferencias entre ambos procesos.
Tenemos un modelo donde tenemos la venta de productos en diferentes centros comerciales, y, diferentes provincias, en, diferentes fechas.
Bien, así que tenemos escritos algunos productos, como aspiradora, donde vemos que la palabra está separada por un espacio.
Esto pasa con otros productos pero no con todos, pero este ejemplo, así como el siguiente lo vamos a realizar con los productos corregidos.
Tenemos dos listas, una como esta escritos los productos, y, otra lista de como deberían de estar escritos de manera correcta.
Vamos a crear una nueva columna con los productos escritos correctamente, y, a partir de esta columna, obtener los totales para cada producto.
Esta corrección, la vamos a hacer con la función BUSCARX.
Lo vamos a hacer en la columna I, a partir de la celda I2, y, lo vamos a hacer de forma matricial.
La función BUSCARX, cuenta con varios argumentos, pero para este ejemplo, solo vamos a usar los tres primeros argumentos, que es valor buscado, donde vamos a buscarlo, y, de que columna o rango queremos que nos devuelva el resultado.
Pues en la celda I2, escribimos el signo igual, seguido del nombre de la función, y, abrimos un paréntesis.
=BUSCARX(
Punto y coma, el primer argumento de BUSCARX es valor buscado, donde si ponemos el valor de la celda E2, después deberemos de fijar celdas, si hubiera, y, arrastrar, pero queremos ahorrarnos este trabajo, por lo que vamos a seleccionar todos los productos de la columna E, esto hará que nos devuelva una matriz desbordada, debido a que la función va a devolver más de un valor.
=BUSCARX(E2:E26;
En este caso, he asignado nombres de rangos a cada columna, para no tener que seleccionar manualmente los datos, porque ya sabemos que un nombre de rango se busca igual que una función, es decir, que si escribimos las iniciales, aparecerán todas las funciones que comiencen por dichas iniciales, incluidos los nombres de rangos.
Para crearlos, con una celda dentro del modelo, pulsamos CTRL más asterisco, quedara seleccionado el modelo.
Ahora, vamos a la pestaña formulas, dentro del grupo nombres definidos, hacemos clic en crear desde la selección, y, elegimos fila superior para usarla como nombre, y, aceptamos.
Si desplegamos, el cuadro de nombres, veremos los nombres de rangos, que acabamos de crear.
Pues, modificamos la función anterior, y, cambiamos el rango, que pusimos, por el nombre de rango producto.
=BUSCARX(Producto;
Punto y coma, lo siguiente es el argumento matriz buscada, es decir, donde vamos a buscar estos valores, en este caso, como algunos nombres no están escritos correctamente, lo vamos a buscar en el rango donde tenemos los productos mal escritos, pero como en esa columna, solo tengo estos datos, voy a seleccionar la columna completa.
=BUSCARX(Producto;O2:O6;
Punto y coma, y como ultimo argumento que vamos a usar, es matriz devuelta, es decir, de donde nos debe de devolver si hay coincidencia, pues en este caso es la columna L.
=BUSCARX(Producto;O2:O6;N2:N6
Cerramos paréntesis, y, aceptamos.
=BUSCARX(Producto;O2:O6;N2:N6)
Tenemos una matriz desbordada, donde podemos ver como los nombres mal escritos han quedado corregidos, pero ¿Qué ocurre con los nombres que estaban bien escritos?, pues que nos aparece un error.
Esto lo podemos resolver con la función SI.ERROR, que ya sabemos que tiene dos argumentos, que es la expresión para evaluar, y, lo que debe de aparecer si la expresión devuelve un error.
En este caso, la expresión a evaluar es la función anterior, y, en caso de que nos devuelva un error, le vamos a decir que nos devuelva la columna producto, esto quiere decir que si devuelve un error, nos va a devolver el producto bien escrito.
=SI.ERROR(BUSCARX(Producto;O2:O6;N2:N6);Producto)
Aceptamos, y, vemos como ya no aparece el error, sino el nombre del producto.
Ahora, lo que queremos, es calcular los totales para cada producto.
Para ello, vamos a hacer uso de la función SUMAR.SI, porque solo tenemos un criterio.
Lo vamos a hacer a partir de la celda K2.
Escribimos el signo igual, ponemos el nombre de la función, y, abrimos un paréntesis.
=SUMAR.SI(
El primer argumento es rango de criterio, es decir, donde vamos a buscar, pues seleccionamos nuestra matriz desbordada, es decir, donde los productos están escritos correctamente, donde, de forma automática, se añadirá el operador de rango derramado (#), quiere decir, que va a seleccionar desde la celda I2, hasta la ultima celda ocupada, dando igual, si el tamaño de la matriz cambia.
=SUMAR.SI(I2#
Punto y coma, el siguiente argumento es criterio, pues seleccionamos la matriz donde tenemos los productos bien escritos.
=SUMAR.SI (I2#;-N2:N6
Punto y coma, y, como ultimo argumento, es el rango de sumar, que es la columna de total, para ello, hacemos uso del nombre de rango Total, cerramos paréntesis, y, aceptamos.
=SUMAR.SI(I2#; N2:N6;Total)
Vemos como se ha credo una matriz desbordada, donde tenemos los totales para cada producto.
Ahora, vamos a hacer lo mismo, es decir, una lista con los productos bien escritos, pero con la función LAMBDA, donde vamos a decidir, si es mejor para este caso, el uso de una función LAMBDA.
Sabemos que los argumentos de esta función es parámetro o calculo, si usamos el argumento parámetro debemos de declarar una variable, para usarla después, y, el argumento calculo, es el uso de una función donde vamos a hacer uso de estas variables creadas anteriormente.
Bien, empezamos escribiendo el signo igual, seguido del nombre de la función LAMBDA, y, abrimos un paréntesis.
=LAMBDA(
Punto y coma, lo siguiente que vamos a hacer es declarar tres variables, que vamos a usar dentro de la función BUSCARX, para cada argumento.
=LAMBDA(a;b;c
Punto y coma, ahora, como argumento calculo, vamos a hacer uso de la función BUSCARX.
=LAMBDA(a;b;c; BUSCARX(
Como primer argumento de BUSCARX, es valor buscado, pues usamos la variable A, como matriz a buscar, usamos la variable B, y, como argumento matriz devuelta, usamos la variable C, y, cerramos paréntesis.
=LAMBDA(a;b;c; BUSCARX(a;b;c)
Las variables A, B, y, C, aun no tiene valores definidos.
Pues, es lo que vamos a hacer ahora, abrimos un paréntesis, y, pasamos los valores para cada variable, la variable A, valdrá los productos, la variable B, son los productos mal escritos, ,y la variable C, son los productos bien escritos.
Cerramos paréntesis.
=LAMBDA(a;b;c; BUSCARX(a;b;c)(Producto;O2:O6;N2:N6)
Aceptamos, y, ya tenemos la matriz desbordada, pero con el mismo problema que en el ejemplo anterior, que donde los productos no están mal escritos, recibimos un error, pues vamos a hacer uso de la función SI.ERROR, para solventarlo, como lo hicimos anteriormente, la función SI.ERROR, debemos de ponerla junto con la función BUSCARX.
=LAMBDA(a;b;c;SI.ERROR(BUSCARX(a;b;c);Producto))(Producto;O2:O6;N2:N6)
Ahora, tenemos la misma matriz obtenida que en el ejemplo anterior.
Pero, vamos a ver la sintaxis del primer ejemplo, y, la comparamos con la de este ejemplo.
La sintaxis del primer ejemplo es:
=SI.ERROR(BUSCARX(Producto;O2:O6;N2:N6);Producto)
Donde no hemos usado ningún tipo de variable, ni hemos tenido que pasar valores a dichas variables.
La sintaxis de la función LAMBDA, pues, vemos que es un poco más larga, la única diferencia, es que hemos tenido que declarar una serie de variables, y, después asignarle valores.
=LAMBDA(a;b;c;SI.ERROR(BUSCARX(a;b;c);Producto))(Producto;O2:O6;N2:N6)
Lo siguiente que vamos a hacer es crear una función personalizada, a partir de la función LAMBDA.
Seleccionamos la primera celda donde hemos puesta la función LAMBDA, y, copiamos la función desde el signo igual hasta el cierre del segundo paréntesis.
Pulsamos CTRL más C, para copiar.
Vamos a la pestaña de fórmulas, dentro del grupo nombres definidos, hacemos clic en asignar nombre.
Se abre la ventana, nombre nuevo, en la ventana nombre, le ponemos un nombre, y, en se refiere a, pegamos la función, con CTRL más V, y, aceptamos.
Hemos copiado el modelo a otra hoja.
Vamos a hacer uso del nombre personalizado, donde solo debemos de asignar valores a las variables, lo hacemos en la hoja llamada ejemplo2.
Para ello, escribimos el signo igual, seguido del nombre de rango que hemos creado, abrimos un paréntesis, y, pasamos los valores a las variables.
=Con_LAMBDA(E2:E26;M2:M6;L2:L6)
Aceptamos, y, vemos que tenemos los mismos valores.
Bien, en otra hoja, tengo el mismo modelo pero con menos columnas, este modelo se encuentra en la hoja llamada ejemplo3.
Queremos lo mismo que antes.
Pues, en la celda E2, escribo el signo igual seguido del nombre de rango que contiene la función LAMBDA, es decir, el nombre de rango Con_LAMBDA, cuando escribamos el nombre de rango, nos dará a elegir si el nombre de rango a usar es para todo el libro, o, para la hoja de cálculo en la que estamos trabajando, voy a elegir del libro, abrimos un paréntesis, y, pasamos los valores para los argumentos, cerramos el paréntesis, y, aceptamos.
= Con_LAMBDA(A2:A26;H2:H6;G2:G6)
Vemos que tenemos los productos corregidos correctamente.
Vamos a crear otro nombre de rango, pero a partir de la función BUSCARX, la que usamos al principio, para traernos el producto bien escrito.
=SI.ERROR(BUSCARX(Producto;O2:O6;N2:N6);Producto)
Para ello, seguimos los pasos anteriores, vamos a la pestaña formulas, dentro del grupo nombres definidos, hacemos clic en asignar nombre, en la ventana nombre, ponemos uno, y, en la ventana se refiere a, pegamos la función, y, aceptamos.
Ahora, usamos, este nombre de rango, el que hemos credo con la función BUSCARX, llamado Total_BUSCARX, donde no hay que pasar variables, lo haremos en la hoja llamada ejemplo4.
=Total_BUSCARX
Vemos que nos devuelve los productos, pero, no han sido corregidos.
Vamos a ver que calculo ha realizado.
Vamos a la pestaña formulas, dentro del grupo nombres definidos, hacemos clic en administrador de nombres, en la ventana que se abre, buscamos nuestro nombre de rango, ,y hacemos clic en modificar.
Podemos ver que aparece la hoja llamada ejemplo1, es donde está trabajando, por lo que no nos vale, porque debería de buscar en la hoja en la que trabajamos, vemos. como las referencias no las he fijado, esto quiere decir, que se han actualizado a las nuevas ubicaciones, por lo que esta función como formula personalizada, no nos vale.
Vamos a ver porque si nos vale la función LAMBDA, volvemos al administrador de nombres, y, modificamos el nombre de rango.
¿Qué vemos?
Pues bien, si nos fijamos la única referencia que uso, es la usada en la función SI.ERROR, cuando la función devuelve un error, que lo toma de la hoja llamada ejemplo1, en principio, como esos datos no se van a mover, no vamos a tener problemas, pero, para asegurarnos, ponemos en absoluta dichas referencias, y, ¿Que ocurre con el resto de la función?, pues que dicho esto, no usamos ninguna referencia a celda o celdas, sino que usamos nombres de variables, y, a estas variables, le pasamos nosotros los valores cuando la usamos, ese es el motivo por lo que la función LAMBDA si nos permite crear una función personaliza, ,y en este caso la función BUSCARX, no nos lo permite.
Por último, vamos a calcular los totales para cada producto, también con una función LAMBDA, lo vamos a hacer en la hoja donde hemos usado la función LAMBDA, que es la hoja llamada ejemplo2.
En la celda K2 de la hoja ejemplo2, escribimos el signo igual, ponemos el nombre de la función, y, abrimos un paréntesis.
=LAMBDA(
Creo tres variables.
=LAMBDA(a;b;c
Punto y coma, ponemos la función SUMAR.SI.
=LAMBDA(a;b;c; SUMAR.SI(
Como argumentos de la función SUMAR.SI, ponemos las tres variables que hemos creado y cerramos paréntesis.
=LAMBDA(a;b;c; SUMAR.SI(a;b;c))
Abrimos paréntesis, y, pasamos los valores para las variables, que es rango de búsqueda, criterio, y, rango de suma, cerramos paréntesis y cerramos.
=LAMBDA (a;b;c; SUMAR.SI(a;b;c))(I2#;M2:M6;H2:H26)
Vemos los totales igual que antes.
Ahora, vamos a crear la función personalizada.
Para ello, seleccionamos desde el signo igual hasta el segundo paréntesis de cierre.
Pulsamos CTRL más C para copiar.
Vamos a la pestaña formulas, dentro del grupo nombres definidos, hacemos clic en asignar nombre, en la ventana que se abre, le damos un nombre, y, en se refiere a, pegamos la formula y aceptamos.
Vamos a probarlo en la hoja llamada ejemplo6.
Pues, en la celda G2, escribo lo siguiente, donde solo tenemos que pasar los valores de las variables.
=Total_SUMA(E2#;H2:H6;D2:D26)
Aceptamos, y, vemos los totales.
Con esta aclaración, de porque es mejor una función LAMBDA, en determinadas ocasiones, dejamos aquí este video.
Yorumlar