Anónimo
Hola a todos,
La Tabla A (1 lado) y la Tabla B (muchos lados) están vinculadas a través de la clave de identidad del código. Ahora me gustaría contar filas en la Tabla B en función de algunos campos en la Tabla A, por ejemplo, me gustaría contar cuántas filas hay en la tabla B cuando B[property1] = A[Aproperty1] & B[property2] = A[Aproperty2]. Sería bastante fácil escribir en columnas calculadas:
=CALCULATE(COUNTROWS(TableB),FILTER(ALL(TableB),AND(TableB[property1]=TableA[Aproperty1],TableB[property2]=TableA[Aproperty2])))
Pero en la medida de la tabla dinámica, con TableA[Aproperty1] y TableA[Aproperty2] marcado en filas, si la medida se define así:
=CALCULATE(COUNTROWS(TableB),ALLEXCEPT(TableA,Aproperty1,Aproperty2))
La tabla B se filtrará primero en función de la tabla A en la clave principal del código, luego se realizarán los campos. Entonces, si hay códigos en la Tabla B que no se muestran en la tabla A, esos valores no se contarán.
¿Qué pasa si quiero incluir esos valores? He probado algo como a continuación pero sin suerte
=CALCULATE(COUNTROWS(TableB),CROSSFILTER(TableB[code],TableA[code],none))
Entonces, ¿cómo puedo traducir la columna calculada a la medida? ¿O cómo puedo ignorar el filtro de relación en medida?
Tu ayuda sería muy apreciada
v-shex-msft
En respuesta a Anónimo
Hola @Anónimo,
>> ¿Para qué sirve esta temperatura?
Temp es el valor actual en el contenido de la fila. Real, cuando estas funciones se limitan a nivel de contenido de fila, puedo usarlas para obtener el valor actual. (Max u otras funciones matemáticas utilizadas para obtener el valor actual de número / fecha, lastnonblank adecuado con get text)
Descripción detallada de la fórmula:
1. El campo de filas property1 es de tableA, puedo usar la función lastnoblank para obtener el valor actual del contenido de la fila;
2. El campo Columns es de tableB, puedo usar la función max para obtener el valor actual del contenido de la fila.
3. Basándome en las variables anteriores, puedo filtrar los mismos registros de toda la tablaB con el mismo formulario property1 tableA y el formulario property2 actual tableB, y luego obtener el recuento de filas como resultado.
Quizás la descripción anterior sea compleja de entender.
Saludos,
Xiaoxin Sheng
v-shex-msft
Hola @Anónimo,
Puede intentar utilizar la fórmula de Belwo si es adecuada para sus necesidades:
Dirección del filtro cruzado: ambos.
Measure:
CountRow = var temp= LASTNONBLANK(Sheet2[property2],[property2]) Return CALCULATE(COUNTROWS(Sheet2),FILTER(ALL(Sheet2),Sheet2[property1]=MAX(Sheet1[property1])&&Sheet2[property2]=temp))
Saludos,
Xiaoxin Sheng
Anónimo
En respuesta a v-shex-msft
@ v-shex-msft
¡Esto funciona de maravilla!
Pero no entiendo bien esta expresión,
¿Qué significa esta temperatura?
¿Cómo se filtra el contexto?
¿Puedes ayudar a elaborar un poco más?
¡¡Muchas gracias!!
v-shex-msft
En respuesta a Anónimo
Hola @Anónimo,
>> ¿Para qué sirve esta temperatura?
Temp es el valor actual en el contenido de la fila. Real, cuando estas funciones se limitan a nivel de contenido de fila, puedo usarlas para obtener el valor actual. (Max u otras funciones matemáticas utilizadas para obtener el valor actual de número / fecha, lastnonblank adecuado con get text)
Descripción detallada de la fórmula:
1. El campo de filas property1 es de tableA, puedo usar la función lastnoblank para obtener el valor actual del contenido de la fila;
2. El campo Columns es de tableB, puedo usar la función max para obtener el valor actual del contenido de la fila.
3. Basándome en las variables anteriores, puedo filtrar los mismos registros de toda la tablaB con el mismo formulario property1 tableA y el formulario property2 actual tableB, y luego obtener el recuento de filas como resultado.
Quizás la descripción anterior sea compleja de entender.
Saludos,
Xiaoxin Sheng
Anónimo
En respuesta a v-shex-msft
Entiendo.
¡Muchas gracias!