Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Stuznet
Helper V
Helper V

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")))

 Capture.PNG

 

 

 

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!

2 ACCEPTED SOLUTIONS
Sean
Community Champion
Community 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! Smiley Happy

 

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"
)

 

View solution in original post

Thank you so much for your help but the correct formula I'm looking is this. Now the result are matching. 

Capture.PNG

 

Spoiler
SWITCH 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"
)

 

View solution in original post

7 REPLIES 7
MFelix
Super User
Super 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

 


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Sean
Community Champion
Community 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! Smiley Happy

 

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. 

Capture.PNG

 

Spoiler
SWITCH 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"
)

 

Hi @Sean,

You are absolutly correct about the AND I was only looking at the final result and prefer the && so never look at the number of arguments, however I prefer the SWITCH instead of the nested if as I show on the second measure.

Regards
MFelix

Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Sean
Community Champion
Community Champion

I prefer SWITCH as well as it is easier to read and less opening and closing parentheses to keep track of.

SWITCH is internally converted into nested IFs anyway Smiley Happy

BTW I see you added the <>0 above Smiley Wink

Yes thank you for pointing it out.

Hopefully one of our answers will help.

Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



@MFelix @Sean both of you are rock star. I tried both formulas Nested IF and Switch and I think I'll go with Switch function, but when I compared the new calculated column "Switch Formula" against my original data Status 2 I'm not getting the correct result.

 

 Capture.PNG

 

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.