Crear una función LAMBDA reutilizable para agrupar ventas por punto de venta
Un miembro de la comunidad comparte un fichero con una función personalizada llamada xMGP_SUG registrada en el Administrador de nombres. El objetivo: a partir de una tabla de más de 500 filas con datos de ventas, obtener un resumen agrupado por Punto de Venta (PDV) mostrando la cantidad de líneas y la suma de piezas. La fórmula original usaba LAMBDA con PIVOTARPOR, pero tenía parámetros declarados que no se utilizaban y una estructura más compleja de lo necesaria.
Leo analiza la fórmula y detecta que el segundo campo no se usa en ningún escenario, y que PIVOTARPOR no aporta valor cuando lo que se necesita es una simple agrupación. Propone esta versión simplificada con AGRUPARPOR:
``
=LAMBDA(xRango;xCampo1;xValor1;
LET(
xDatos; xRango;
xCampos; ELEGIRCOLS(xDatos;xCampo1);
xValores;ELEGIRCOLS(xDatos;xValor1);
xAG; AGRUPARPOR(xCampos;xValores;APILARH(FILAS;SUMA);;;;xValores>0);
xEncabezados;{"PDV"\"CANT. LINEAS"\"CANT. PIEZAS"};
APILARV(xEncabezados;EXCLUIR(xAG;1))
)
)(B3:F523;1;3)
`
ELEGIRCOLS extrae las columnas necesarias del rango, AGRUPARPOR agrupa usando dos funciones de agregación apiladas con APILARH (FILAS para contar y SUMA para totalizar), filtrando valores mayores que 0. EXCLUIR(xAG;1) quita la fila de encabezados automáticos y APILARV añade los personalizados. Los argumentos al final son para evaluar directamente en la hoja; al registrar la LAMBDA en el Administrador de nombres se quitan.
Al revisar los datos, Leo descubre que hay campos de tienda repetidos (mismo PDV con distintos códigos de barras). En este caso sí tiene sentido una doble agrupación: primero por PDV + código de barras, y luego consolidar por PDV:
`
=LAMBDA(xRango;xCampo1;xCampo2;xValor1;
LET(
xDatos; xRango;
xCampos; ELEGIRCOLS(xDatos;xCampo1;xCampo2);
xValores;ELEGIRCOLS(xDatos;xValor1);
xAG; AGRUPARPOR(xCampos;xValores;SUMA;;0;;xValores>0);
xAGG; AGRUPARPOR(ELEGIRCOLS(xAG;1);ELEGIRCOLS(xAG;3);APILARH(FILAS;SUMA));
xEncabezados;{"PDV"\"CANT. LINEAS"\"CANT. PIEZAS"};
APILARV(xEncabezados;EXCLUIR(xAGG;1))
)
)(B3:F523;1;5;3)
`
La primera agrupación consolida por PDV + código de barras sumando piezas. La segunda toma solo la columna de PDV y vuelve a agrupar, contando líneas únicas y sumando piezas. Un buen ejemplo de cómo combinar LAMBDA con AGRUPARPOR` para crear funciones de resumen reutilizables.
Más contenido de Excel en InflueXcel
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)