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.Split y Table.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