Stuznet
Me quedé atascado escribiendo la declaración IF/AND anidada.
A continuación se muestra la declaración que escribí en Excel, referencia!A1 es la fecha 31/08/2018
=SI(V2>ref!$A$1,»Futuro»,SI(Y(V2<=ref!$A$1, X2=0),"Tarde",SI(Y(V2<=ref!$A$1, X2<>0, Y2<=0),"a tiempo","tarde")))
Esta es la declaración que escribí en power bi pero recibo un error de sintaxis.
columna = SI(Datos[BL Date] > fecha(2018,8,31) = «Futuro», SI(Y(Datos[BL Date] <= fecha(2018,8,31), Datos[Actual Date]<>0 = «Tarde»), SI(Y(Datos[BL Date],Datos[Actual Date]<>0),Datos[Variance] <= 0),«Puntual», «Tarde» )))
¿Puede ayudarme alguien, por favor?
¡Muchas gracias!
sean
En respuesta a mfelix
La razón por la que su fórmula no funciona es que ¡Y acepta solo 2 argumentos!
Personalmente, prefiero el enfoque SWITCH de @MFelix usando && más fácil de preparar (al menos para mí)
Pero podrías probar esto…
Column =
IF (
Data[BL Date] > DATE ( 2018, 8, 31 )
= "Future",
IF (
AND ( Data[BL Date] <= DATE ( 2018, 8, 31 ), Data[Actual Date] <> 0 ),
"Late",
IF (
AND ( AND ( Data[BL Date] <> 0, Data[Actual Date] <> 0 ), Data[Variance] <= 0 ),
"On-Time",
"Late"
)
)
)
@Stuznet ¡Déjame saber si esto realmente funciona!
EDITAR: @MFelix, creo que debe agregar esta condición …
nested if = IF ( Data[BL Date] > DATE ( 2018, 8, 31 ), "Future", IF ( Data[BL Date] <= DATE ( 2018, 8, 31 ) && Data[Actual Date] <> 0, "Late", IF ( Data[BL Date] <> 0 && Data[Actual Date] <> 0 && Data[Variance] <= 0, "On-Time", "Late" ) ) )
Y…
SWITCH FORMULA = SWITCH ( TRUE (), Data[BL Date] > DATE ( 2018, 8, 31 ), "Future", Data[BL Date] <= DATE ( 2018, 8, 31 ) && Data[Actual Date] <> 0, "Late", Data[BL Date] <> 0 && Data[Actual Date] <> 0 && Data[Variance] <= 0, "On-Time", "Late" )
Stuznet
En respuesta a sean
Muchas gracias por su ayuda, pero la fórmula correcta que estoy buscando es esta. Ahora el resultado es coincidente.
CAMBIAR (
CIERTO (),
Datos[BL Date] > FECHA ( 31, 8, 2018 ), «Futuro»,
Datos[BL Date] <= FECHA (2018, 8, 31)
&& ES EN BLANCO (Datos[Actual Date]) , «Tarde»,
Datos[BL Date] <= FECHA (2018, 8, 31)
&& ES EN BLANCO (Datos[Actual Date]) = FALSO()
&& Datos[Variance] <= 0, "a tiempo",
«Tarde»
)
mfelix
Hola @Stuznet,
Tiene algunas correcciones en DAX SI no usa el = para definir los estados también los corchetes. He hecho algunos cambios para reducir el DAX. Puede usar una de las dos fórmulas a continuación:
nested if = IF ( Data[BL Date] > DATE ( 2018, 8, 31 ), "Future", IF ( Data[BL Date] <= DATE ( 2018, 8, 31 ) && Data[Actual Date] <> 0, "Late", IF ( Data[BL Date] <> 0 && Data[Actual Date] <> 0 && Data[Variance] <= 0, "On-Time", "Late" ) ) )
En lugar de usar el IF anidado, es mejor usar la función SWITHC, consulte la documentación aquí, vea a continuación la fórmula dax para su caso.
SWITCH FORMULA = SWITCH ( TRUE (), Data[BL Date] > DATE ( 2018, 8, 31 ), "Future", Data[BL Date] <= DATE ( 2018, 8, 31 ) && Data[Actual Date] <> 0, "Late", Data[BL Date] <> 0 && Data[Actual Date] <> 0 && Data[Variance] <= 0, "On-Time", "Late" )
Saludos,
mfelix
sean
En respuesta a mfelix
La razón por la que su fórmula no funciona es que ¡Y acepta solo 2 argumentos!
Personalmente, prefiero el enfoque SWITCH de @MFelix usando && más fácil de preparar (al menos para mí)
Pero podrías probar esto…
Column =
IF (
Data[BL Date] > DATE ( 2018, 8, 31 )
= "Future",
IF (
AND ( Data[BL Date] <= DATE ( 2018, 8, 31 ), Data[Actual Date] <> 0 ),
"Late",
IF (
AND ( AND ( Data[BL Date] <> 0, Data[Actual Date] <> 0 ), Data[Variance] <= 0 ),
"On-Time",
"Late"
)
)
)
@Stuznet ¡Déjame saber si esto realmente funciona!
EDITAR: @MFelix, creo que debe agregar esta condición …
nested if = IF ( Data[BL Date] > DATE ( 2018, 8, 31 ), "Future", IF ( Data[BL Date] <= DATE ( 2018, 8, 31 ) && Data[Actual Date] <> 0, "Late", IF ( Data[BL Date] <> 0 && Data[Actual Date] <> 0 && Data[Variance] <= 0, "On-Time", "Late" ) ) )
Y…
SWITCH FORMULA = SWITCH ( TRUE (), Data[BL Date] > DATE ( 2018, 8, 31 ), "Future", Data[BL Date] <= DATE ( 2018, 8, 31 ) && Data[Actual Date] <> 0, "Late", Data[BL Date] <> 0 && Data[Actual Date] <> 0 && Data[Variance] <= 0, "On-Time", "Late" )
Stuznet
En respuesta a sean
Muchas gracias por su ayuda, pero la fórmula correcta que estoy buscando es esta. Ahora el resultado es coincidente.
CAMBIAR (
CIERTO (),
Datos[BL Date] > FECHA ( 31, 8, 2018 ), «Futuro»,
Datos[BL Date] <= FECHA (2018, 8, 31)
&& ES EN BLANCO (Datos[Actual Date]) , «Tarde»,
Datos[BL Date] <= FECHA (2018, 8, 31)
&& ES EN BLANCO (Datos[Actual Date]) = FALSO()
&& Datos[Variance] <= 0, "a tiempo",
«Tarde»
)
mfelix
En respuesta a sean
Hola @Sean,
Tienes toda la razón sobre AND, solo estaba mirando el resultado final y prefiero &&, así que nunca mires la cantidad de argumentos, sin embargo, prefiero SWITCH en lugar de anidado, como muestro en la segunda medida.
Saludos
mfelix
sean
En respuesta a mfelix
Prefiero SWITCH, ya que es más fácil de leer y menos paréntesis de apertura y cierre para realizar un seguimiento.
SWITCH se convierte internamente en IF anidados de todos modos
Por cierto, veo que agregaste el <>0 arriba
mfelix
En respuesta a sean
Sí, gracias por señalarlo.
Esperemos que una de nuestras respuestas ayude.
Stuznet
En respuesta a mfelix
@MFelix @Sean ambos son estrellas de rock. Probé ambas fórmulas Nested IF y Switch y creo que usaré la función Switch, pero cuando comparé la nueva columna calculada «Fórmula de cambio» con mis datos originales Estado 2, no obtuve el resultado correcto.