Unpivot de asientos contables con conceptos múltiples

Juan plantea un problema de contabilidad con una estructura de datos compleja: tiene una tabla de asientos contables donde cada fila contiene múltiples tipos de asiento (cuentas contables repartidas en columnas) y un campo Concepto que agrupa varios conceptos separados por "/".

Por ejemplo, una fila puede tener:
- Concepto: "Salario Enero/Outsourcing/Ventas Enero//Amortización Enero"
- Columnas D-R: cuentas contables (640, 642, 476, 465, 607, 472, 400, 705, 477, 430, 628, 681, 216...) con sus importes

El objetivo es transformar esta tabla ancha en formato largo: Fecha | Concepto individual | Cuenta | Importe, donde cada concepto separado por "/" se asigna correctamente a su grupo de cuentas.

La dificultad es doble: hay que hacer el unpivot de las columnas (pasar de ancho a largo) y a la vez dividir el concepto por "/" para asignar cada parte a las cuentas que le corresponden. Las celdas vacías separan los grupos de cuentas que pertenecen a cada concepto.

John resuelve el problema con una fórmula que combina LET, APILARH, ENCOL, SI, TEXTODESPUES y SCAN:

``
=LET(
H; APILARH;
F; LAMBDA(x; ENCOL(SI(D3:R4=""; E; x); 2));
APILARV(
H(B2:C2; "Cuenta"; "Importe");
H(F(B3:B4); F(TEXTOANTES(TEXTODESPUES("/"&C3:C4; "/"; SCAN(; SI.ERROR(--DERECHA(D1:R1); ); MAX)); "/";;;1)); F(D2:R2); F(D3:R4))
)
)
`

La clave de esta solución está en cómo identifica los grupos de cuentas: usa la fila de cabeceras ("Tipo asiento 1", "Tipo Asiento 2"...) para detectar dónde empieza cada grupo. SCAN con MAX genera un contador incremental que, combinado con TEXTODESPUES/TEXTOANTES`, extrae el concepto correcto para cada cuenta.

Miki aporta una solución alternativa visible en el fichero, que desglosa los asientos de forma más directa, separando por tipo de asiento y concepto.

El fichero adjunto incluye la tabla original con el problema, la solución esperada y ambas soluciones.

Más contenido de Excel en InflueXcel