Forum Discussion
Nested IF/AND Statement
I got stucked writing Nested IF/AND statement.
Below is the statement I wrote in Excel, ref!A1 is the date 8/31/2018
=IF(V2>ref!$A$1,"Future",IF(AND(V2<=ref!$A$1, X2=0),"Late",IF(AND(V2<=ref!$A$1,X2<>0, Y2<=0),"On-Time","Late")))
This is the statement I wrote in power bi but I'm getting syntax error.
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(Data[BL Date],Data[Actual Date]<>0),Data[Variance] <= 0),"On-Time","Late" )))
Can someone please help?
Thanks much!
The reason your formula is not working is that AND accepts only 2 arguments!
I personally prefer MFelix's SWITCH approach using && easier to ready (for me at least)
But you could try this...
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"
)
)
)StuznetLet me know if this actually works! :smileyhappy:
EDIT: MFelix I believe you need to add this condition...
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" ) ) )And...
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" )Thank you so much for your help but the correct formula I'm looking is this. Now the result are matching.
SpoilerSWITCH FORMULA =
SWITCH (
TRUE (),
Data[BL Date] > DATE ( 2018, 8, 31 ), "Future",
Data[BL Date] <= DATE ( 2018, 8, 31 )
&& ISBLANK(Data[Actual Date]) , "Late",
Data[BL Date] <= DATE ( 2018, 8, 31 )
&& ISBLANK(Data[Actual Date]) = FALSE()
&& Data[Variance] <= 0, "On-Time",
"Late"
)
7 Replies
- MFelixSuper User
Hi Stuznet,
You have some incorrections on DAX IF you don't use the = to define the states also the brackets I have made some changes to reduce the DAX you can use one of both formulas below:
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" ) ) )Rather than use the nested IF is better to use the SWITHC function check the documentation here, see below the dax formula for your case.
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" )Regards,
MFelix
- SeanCommunity Champion
The reason your formula is not working is that AND accepts only 2 arguments!
I personally prefer MFelix's SWITCH approach using && easier to ready (for me at least)
But you could try this...
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"
)
)
)StuznetLet me know if this actually works! :smileyhappy:
EDIT: MFelix I believe you need to add this condition...
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" ) ) )And...
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" )