Separar artículos concatenados en filas: 4 enfoques (fórmulas, Power Query y Python)
Caso interesante con cuatro enfoques muy distintos para resolver un mismo problema: una tabla tiene una columna de artículos concatenados con ";" por cada cliente (ej: "Art1; Art2; Art3") y se necesita "explotar" cada artículo en su propia fila, repitiendo el cliente correspondiente.
Leo propone resolverlo con funciones modernas de Excel 365, usando ENCOL para convertir el texto separado en columna y SECUENCIA en horizontal para manejar un número variable de separadores. El truco: donde hay {1\2} se puede sustituir con SECUENCIA(;20) para más flexibilidad, ya que ENCOL anula las columnas vacías automáticamente.
Gerson Pineda aporta un enfoque alternativo con AGRUPARPOR y EXCLUIR, combinando agrupación y filtrado en una sola expresión.
Por el lado de Power Query, Gerson también comparte una solución elegante con una sola transformación:
``
= Table.ExpandListColumn(
Table.TransformColumns(
Origen;
{{"Articulos"; each Text.Split(_; "; ")}}
);
"Articulos"
)
`
Text.Split convierte el texto concatenado en una lista, y Table.ExpandListColumn expande cada elemento en su propia fila.
Y la solución más concisa viene de John con Python en Excel:
`python
xl("B4:C8",1).set_index("Cliente").Articulos.str.split("; ").explode()
`
Una sola línea que lee el rango, indexa por cliente, separa los artículos y los explota en filas.
Cuatro enfoques (fórmulas dinámicas, AGRUPARPOR`, Power Query y Python) para un mismo problema, cada uno con sus ventajas según el contexto y la versión de Excel disponible.
El problema
En muchas tablas, cada cliente llega con todos sus artículos apretujados en una sola celda, separados por punto y coma: Art1; Art2; Art3. Para analizar esos datos necesitas justo lo contrario: una fila por artículo, repitiendo el cliente al que pertenece. Es la operación que en el mundo de los datos se conoce como "explotar" una lista, y en la comunidad de Influexcel aparecieron cuatro caminos muy distintos para resolverla.
Enfoque 1: funciones dinámicas de Excel 365
Leo lo resuelve con las matrices dinámicas modernas. La idea es convertir el texto separado en una columna con ENCOL y apoyarse en SECUENCIA en horizontal para manejar un número variable de separadores. El truco elegante: donde normalmente pondrías una constante fija, puedes usar SECUENCIA(;20) para dar margen a listas más largas, porque ENCOL descarta automáticamente las celdas vacías que sobren.
Es la opción ideal si trabajas con Excel 365 y quieres una fórmula que se recalcule sola cuando cambian los datos.
Enfoque 2: AGRUPARPOR y EXCLUIR
Gerson Pineda aporta una variante que combina agrupación y filtrado en una sola expresión con AGRUPARPOR y EXCLUIR. En lugar de tratar el texto celda a celda, agrupa por cliente y va desplegando cada artículo, dejando la tabla lista sin pasos intermedios.
Enfoque 3: Power Query
Cuando el volumen crece, Power Query brilla. Gerson comparte una solución de una sola transformación:
= Table.ExpandListColumn(
Table.TransformColumns(
Origen;
{{"Articulos"; each Text.Split(_; "; ")}}
);
"Articulos"
)Text.Split convierte el texto concatenado en una lista y Table.ExpandListColumn expande cada elemento en su propia fila. Es robusto, se refresca con un clic y no depende de la versión de fórmulas que tengas.
Enfoque 4: Python en Excel
Y la solución más corta llega de la mano de John con Python en Excel, en una sola línea:
xl("B4:C8",1).set_index("Cliente").Articulos.str.split("; ").explode()Lee el rango, indexa por cliente, separa los artículos por el punto y coma y los explota en filas con explode(). Para quien ya maneja pandas, es difícil ser más conciso.
Funciones clave
ENCOL: apila un rango en una única columna, ignorando huecos.SECUENCIA: genera series de números para controlar repeticiones variables.AGRUPARPOR: agrupa y resume en una sola fórmula.Text.SplityTable.ExpandListColumn(Power Query): trocean texto y expanden listas en filas.str.split(...).explode()(Python): el equivalente en pandas de "explotar" una lista.
Conclusión
El mismo problema, cuatro herramientas: fórmulas dinámicas, AGRUPARPOR, Power Query y Python. No hay una respuesta única "correcta"; la mejor depende de tu versión de Excel, del tamaño de los datos y de con qué te sientas más cómodo. Esta variedad es justo lo que hace especial a la comunidad de Influexcel: cada problema real termina con un abanico de soluciones que te enseñan a pensar en Excel desde varios ángulos.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Readmisión de pacientes en 48h: Power Query, LAMBDA/MAP y AGRUPARPOR CasoAndrés Rojas plantea un reto real de datos clínicos: a partir de una tabla con más de un millón de registros de urgencias (IdPaciente, Fecha
- Extraer máximos por clave y calcular tiempo transcurrido: AGRUPARPOR vs fórmulas clásicas CasoInteresante caso doble que arrancó con una necesidad muy concreta: dada una tabla con columnas Clave, Secuencia y Rev, obtener el máximo de
- Regularización trimestral con AGRUPARPOR y ARCHIVOMAKEARRAY: del caos a una fórmula CasoCaso fresquito de la comunidad. Juan plantea un problema contable: tiene una tabla de movimientos (Nombre, Cuenta, Importe, Fecha) y necesit
- 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
- Power Query: rutas dinámicas para compartir ficheros sin romper conexiones CasoUn miembro de la comunidad plantea un problema muy frecuente: tiene una consulta de Power Query con una ruta de red fija (\\servidor\shared-
- COMBINARX falla con datos de tablas dinámicas: cómo solucionarlo con AGRUPARPOR CasoUn miembro de la comunidad utiliza COMBINARX para cruzar datos financieros (códigos de cuenta, nombres y comentarios) entre dos años fiscale
- 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
- ¿Columnas con nombres distintos en Power Query? Tutorial¿Columnas con nombres distintos en Power Query? Aquí tienes la solución definitiva para normalizar tus datos y evitar errores al combinar fi
- Desempaquetar resultado multicolumna de BUSCARX con arrays CasoUn miembro desde Argentina tiene una fórmula =BUSCARX(A22:A28; A2:A11; E2:G11) que busca varios valores a la vez en un rango de tres columna
- SUMAR.SI.CONJUNTO con referencias de celda en los criterios de fecha CasoUn miembro de la comunidad tiene una fórmula SUMAR.SI.CONJUNTO que funciona perfectamente con fechas escritas directamente, pero no consigue