Agrupar y limpiar referencias con AGRUPARPOR, DIVIDIRTEXTO y APILARV
Interesante problema de un miembro que trabaja con una tabla de "Push Money cancelado" con más de 150 productos. Las referencias vienen duplicadas con formato "CÓDIGO-CÓDIGO" (ej: LABU11000-LABU11000) y necesita agrupar por referencia limpia y fabricante, sumando los importes.
El reto tiene doble vertiente: limpiar la referencia (quedarse con la parte antes del guion) y agrupar los datos filtrando por fabricante. La comunidad aportó tres enfoques distintos, cada uno con sus ventajas.
Solución 1: AGRUPARPOR + TEXTOANTES
Gerson propuso usar AGRUPARPOR con la función SINGLE como agregador, y luego limpiar las referencias con TEXTOANTES:
``
=LET(
a; AGRUPARPOR(
TablaPushMoney[[Referencia]:[Fabricante]];
TablaPushMoney[Push Money cancelado];
SINGLE;; 0;;
TablaPushMoney[Fabricante]="ABUELO"
);
TEXTOANTES(a; "-";; ;; a)
)
`
AGRUPARPOR agrupa por las columnas Referencia y Fabricante, aplicando SINGLE como función (devuelve el valor tal cual cuando no hay duplicados) y filtrando solo el fabricante deseado. Después, TEXTOANTES limpia las referencias quitando todo a partir del guion — y el último argumento a actúa como valor por defecto si no hay guion.
Solución 2: LET + DIVIDIRTEXTO
Otra propuesta más compacta usando DIVIDIRTEXTO para descomponer la tabla completa:
`
=LET(m; DIVIDIRTEXTO(TablaPushMoney&"-"; "-"); SI.ERROR(--m; m))
`
Un enfoque elegante que concatena un guion extra a toda la tabla y luego divide por "-", convirtiendo los resultados numéricos con --. Ojo: DIVIDIRTEXTO tiene un límite de ~32.000 caracteres, así que esta solución puede fallar con tablas muy grandes.
Solución 3: APILARV + TEXTOANTES + APILARH
Un tercer enfoque más explícito reconstruyendo la tabla columna a columna:
`
=APILARV(
TablaPushMoney[#Encabezados];
APILARH(
TEXTOANTES(TablaPushMoney[Referencia]; "-";;;; TablaPushMoney[Referencia]);
TablaPushMoney[Fabricante];
TablaPushMoney[Push Money cancelado]
)
)
`
Aquí se limpia la columna de referencias con TEXTOANTES, se reensambla la tabla horizontalmente con APILARH y se añaden los encabezados originales con APILARV`. Más verbose pero muy claro de leer.
El problema: referencias duplicadas y agrupación por fabricante
Un miembro que trabaja con una tabla de más de 150 productos se topó con un doble reto. Las referencias venían duplicadas dentro de la misma celda, con formato "CÓDIGO-CÓDIGO" (por ejemplo, un código repetido con un guion en medio), y necesitaba agrupar por referencia limpia y por fabricante, sumando los importes.
Son en realidad dos tareas encadenadas: limpiar la referencia (quedarse con la parte anterior al guion) y agrupar los datos filtrando por fabricante. La comunidad aportó tres enfoques, cada uno con su punto fuerte.
Solución 1: AGRUPARPOR + TEXTOANTES
Gerson combinó la agrupación con la limpieza en un LET:
=LET(
a; AGRUPARPOR(
TablaPushMoney[[Referencia]:[Fabricante]];
TablaPushMoney[Push Money cancelado];
SINGLE;; 0;;
TablaPushMoney[Fabricante]="ABUELO"
);
TEXTOANTES(a; "-";; ;; a)
)AGRUPARPOR agrupa por Referencia y Fabricante, usa SINGLE como función de agregado (devuelve el valor tal cual cuando no hay duplicados) y filtra directamente el fabricante deseado con su último argumento. Después, TEXTOANTES(a; "-") recorta cada referencia quedándose con lo anterior al guion; el último argumento actúa como valor por defecto si alguna referencia no tuviera guion. Todo en una fórmula.
Solución 2: LET + DIVIDIRTEXTO
Una versión más compacta que descompone la tabla entera de golpe:
=LET(m; DIVIDIRTEXTO(TablaPushMoney&"-"; "-"); SI.ERROR(m*1; m))El truco: concatena un guion extra a toda la tabla, divide por "-" con DIVIDIRTEXTO y luego fuerza a número los trozos que lo sean (aquí con m*1; también sirve la doble negación con dos signos menos). Elegante, pero con una pega importante: DIVIDIRTEXTO tiene un límite de unos 32.000 caracteres, así que puede quedarse corta con tablas muy grandes.
Solución 3: APILARV + TEXTOANTES + APILARH
Un tercer camino, más explícito, reconstruyendo la tabla columna a columna:
=APILARV(
TablaPushMoney[#Encabezados];
APILARH(
TEXTOANTES(TablaPushMoney[Referencia]; "-";;;; TablaPushMoney[Referencia]);
TablaPushMoney[Fabricante];
TablaPushMoney[Push Money cancelado]
)
)Aquí se limpia la columna de referencias con TEXTOANTES, se reensambla la tabla en horizontal con APILARH y se le añaden los encabezados originales por arriba con APILARV. Es más verboso, pero se lee de un vistazo y no depende de trucos de coerción.
Funciones clave
AGRUPARPOR: agrupa por varias columnas y admite un filtro y una función de agregado a medida.TEXTOANTES: extrae el texto anterior a un delimitador, con valor por defecto si falta.DIVIDIRTEXTO: parte texto por un separador (ojo al límite de tamaño).SINGLE: agregador que devuelve el valor cuando el grupo no tiene duplicados.APILARVyAPILARH: reconstruyen la tabla con sus encabezados.
Conclusión
Limpiar y agrupar a la vez es una combinación que sale constantemente con datos exportados de otros sistemas. Tienes desde la vía compacta (AGRUPARPOR + TEXTOANTES) hasta la reconstrucción explícita con APILARV, pasando por el truco de DIVIDIRTEXTO. Elige según el tamaño de tus datos y lo legible que quieras dejar la fórmula. Retos de limpieza como este se resuelven cada semana en la comunidad de InflueXcel.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Precio más reciente por artículo: REDUCE, AGRUPARPOR y números complejos CasoNuevo reto interesante planteado por Miki: dada una tabla con artículos y sus precios históricos por año (múltiples filas por artículo), obt
- Resumen mensual ordenado cronológicamente con una sola fórmula AGRUPARPOR CasoDesde Lima, un miembro de la comunidad plantea un problema muy habitual: tiene datos con fechas y valores, y quiere hacer un resumen por mes
- Reto de agrupación y pivotado: AGRUPARPOR vs ARCHIVOMAKEARRAY vs MAP CasoLeandro trae un reto de internet al grupo: a partir de una tabla con claves repetidas y valores, generar una tabla pivotada donde cada clave
- Agrupar y sumar columnas específicas con AGRUPARPOR y ELEGIRCOLS CasoUn miembro de la comunidad necesita agrupar datos de una hoja de seguimiento y sumar solo determinadas columnas, sin incluir todas las del r
- Cálculos iterativos con REDUCE y APILARV en Excel CasoLa comunidad aborda un caso sobre cómo trabajar con bucles iterativos en Excel usando funciones modernas. Un miembro necesita realizar cálcu
- Evitar 1/1/1900 al apilar tablas con fechas vacías usando APILARV CasoFernando tiene varias tablas auxiliares que combina con APILARV en una tabla resumen. El problema: cuando un campo de fecha está vacío, apar
- Funciones personalizadas en Excel: LET, LAMBDA y recursividad TutorialCómo pasar de una fórmula escrita a mano a una función propia que puedes llamar por su nombre en cualquier libro. Los tres vídeos de esta pá
- Formato dinámico AGRUPARPOR PIVOTARPOR TutorialAplicar formato condicional a las matrices calculadas es fundamental para conseguir que su legibilidad sea óptima
- Plantilla descargable: convierte Excel en tu coach TutorialAprenderás a construir desde cero una plantilla en Excel para el seguimiento de objetivos y hábitos. Te enseñaremos a registrar variables di
- Filtrar columnas que contienen negativos con BYCOL y N() CasoJuan plantea cómo detectar valores negativos en una matriz numérica. Conoce HALLAR para buscar texto, pero no encuentra el equivalente para