¿Cómo podemos fusionar filas de una tabla como se muestra a continuación?
| X | Y | | | | | |
| ESTADO_1 | 1 | | ESTADO_1 | 6 | 896 | |
| ESTADO_1 | 2 | | ESTADO_2 | 7 | |
| ESTADO_1 | 3 | | ESTADO_3 | 22 | |
| ESTADO_2 | 4 | | ESTADO_4 | 861 | |
| ESTADO_2 | 3 | | ESTADO_2 | 94 | 94 | |
| ESTADO_3 | 2 | | ESTADO_1 | 37 | 412 | |
| ESTADO_3 | 5 | | ESTADO_2 | 4 | |
| ESTADO_3 | 10 | | ESTADO_3 | 18 | |
| ESTADO_3 | 5 | | ESTADO_4 | 353 | |
| ESTADO_4 | 576 | | ESTADO_2 | 94 | 94 | |
| ESTADO_4 | 33 | | ESTADO_1 | 37 | 37 | |
| ESTADO_4 | 25 | | ESTADO_2 | 4 | 4 | |
| ESTADO_4 | 97 | | | | | |
| ESTADO_4 | 54 | | | | | |
| ESTADO_4 | 76 | | | | | |
| ESTADO_2 | 94 | | | | | |
| ESTADO_1 | 37 | | | | | |
| ESTADO_2 | 4 | | | | | |
1. Primero agrupa la ocurrencia continua de filas
2. Calcule la suma de las ocurrencias secuenciales de STATE_1 a STATE_4
Pfa la tabla de muestra para su referencia
Resolví el problema usando 2 nuevas columnas de fórmula
La fórmula de la columna de grupo solo crea un número de agrupación cuando se detecta: valor grande
If( Row() == 1, theGroup = 0 );
If( Is Missing( :Big Value ) == 0,
theGroup
++);
theGroup;
La fórmula de la columna Sum solo mira una fila hacia adelante, y si detecta un valor que no falta para :Big Value, suma las sumas de :Value y :Big Value para el grupo actual y luego las suma
If( Is Missing( :Big Value[Row() + 1] ) == 0,
Sum( Col Sum( :Value, :Group ), Col Sum( :Big Value, :Group ) ),
If( Row() == N Rows( Current Data Table() ) & Is Missing( :Big Value ) == 0,
Sum( :Value, :Big Value )
)
)
Adjunto la tabla de datos que utilicé