Hola, tuve que hacer algunos cambios, pero lo hice funcionar.
Aquí está el resultado final:
Semanas en cuartil =
Dónde __index = CALCULAR(..MAX([id_week])) ¿Cuál es mi índice de fila actual?
Dónde __group = CALCULAR(..MAX([id_employee])) ¿Cuál es mi grupo actual?
Dónde __tmpTable1 = FILTRO(Todo('Tabla'),[id_employee]=__group&&[id_week]<__index) Devolver todas las filas anteriores a la fila actual dentro del mismo "grupo"
Dónde __tmpTable2 = ADICIONES(__tmpTable1,"__diff",[id_week] - MAXX(FILTRO(Todo(«Cuadro»),[id_week]<ANTERIOR([id_week]) && [id_employee]=ANTERIOR([id_employee])),[id_week])) Para cada fila devuelta, calcule la diferencia entre el valor de índice actual y el valor de índice anterior dentro del mismo grupo. Para las filas de la secuencia agrupada, esto será 1, pero para las filas dentro de un grupo que están fuera de secuencia, este valor será mayor que 1
Dónde __max = MAXX(__tmpTable2,[id_week]) Calcule el índice máximo en la tabla filtrada actual.
Dónde __maxStart = MAXX(FILTRO(__tmpTable2,[__diff]>1),[id_week]) Para tener en cuenta los "saltos" en la agrupación, calcule el valor máximo del índice del último "salto" (la fila justo después del salto donde el grupo comienza de nuevo) Este será el índice más grande donde la diferencia con el índice anterior en el mismo grupo es mayor que 1 (fila anterior)
Dónde __tmpTable3 = FILTRO(__tmpTable2,[id_week]>=__maxStart) Filtrar todos los demás archivos basura porque no queremos contar filas antes del salto
DEVOLUCIÓN Si(ISBLANK(__max),1,Si(__max=__index-1,CUENTAS(__tmpTable3)+1,1)) Si __max está en blanco, sabemos que estamos al principio de la tabla, así que 1. Si el índice máximo de nuestra tabla original es 1 menor que el índice actual, sabemos que estamos en secuencia, por lo que contamos todas nuestras filas filtradas (que no incluyen filas más allá de un "salto"), de lo contrario devolvemos 1 porque sabemos que estamos en la fila inmediatamente después de un "salto".
¡Gracias!