Forum Discussion

PierreM52's avatar
PierreM52
New Member
5 years ago
Solved

IF THEN ELSE syntax

Hello all,

 

I've a syntax issue, it returns me "THEN syntax is incorrect"

My code :

IF (HOUR(Production[Debut])>=5
    && HOUR(Production[Debut])<13
    && WEEKDAY(Production[Jour],2)<>5
    THEN "Matin"
    ELSE IF HOUR(Production[Debut])>=13
        && HOUR(Production[Debut])<21
        && WEEKDAY(Production[Jour],2)<>5
        THEN "Après-midi"
        ELSE IF WEEKDAY(Production[Jour],2)<>5
            THEN "Nuit"
            ELSE IF HOUR(Production[Debut])>=5
                && HOUR(Production[Debut])<11
                && WEEKDAY(Production[Jour],2)=5
                THEN "Matin"
                ELSE IF HOUR(Production[Debut])>=11
                    && HOUR(Production[Debut])<17
                    && WEEKDAY(Production[Jour],2)=5
                    THEN "Après-midi"
ELSE "Nuit")

 

Has someone an idea to help me to understand my mistake ? Thanks,

  • Hi PierreM52 

    Here's your if then else translated into M for Power Query

    I've also created a PBIX file and an Excel Workbook with dummy data showing how this works.

     

    #"Added Custom" = Table.AddColumn(PreviousStepName, "Custom", each
    
    if 
    
    (Time.Hour([Debut]) >= 5 and Time.Hour([Debut]) < 13 and Date.DayOfWeek([Jour], Day.Monday) <> 5) then "Matin" 
    
    else if 
    
    (Time.Hour([Debut]) >= 3 and Time.Hour([Debut]) < 21 and Date.DayOfWeek([Jour], Day.Monday) <> 5) then "Après-midi" 
    
    else if 
    
    Date.DayOfWeek([Jour], Day.Monday) <> 5 then "Nuit" 
    
    else if 
    
    (Time.Hour([Debut]) >= 5 and Time.Hour([Debut]) < 11 and Date.DayOfWeek([Jour], Day.Monday) = 5) then "Matin" 
    
    else if 
    
    (Time.Hour([Debut]) >= 11 and Time.Hour([Debut]) < 17 and Date.DayOfWeek([Jour], Day.Monday) = 5) then "Après-midi" 
    
    else "Nuit")

     

    Phil


    If I answered your question please mark my post as the solution.
    If you liked my answer click on the Thumbs Up icon.

6 Replies

  • Hi PierreM52 

    Here's your if then else translated into M for Power Query

    I've also created a PBIX file and an Excel Workbook with dummy data showing how this works.

     

    #"Added Custom" = Table.AddColumn(PreviousStepName, "Custom", each
    
    if 
    
    (Time.Hour([Debut]) >= 5 and Time.Hour([Debut]) < 13 and Date.DayOfWeek([Jour], Day.Monday) <> 5) then "Matin" 
    
    else if 
    
    (Time.Hour([Debut]) >= 3 and Time.Hour([Debut]) < 21 and Date.DayOfWeek([Jour], Day.Monday) <> 5) then "Après-midi" 
    
    else if 
    
    Date.DayOfWeek([Jour], Day.Monday) <> 5 then "Nuit" 
    
    else if 
    
    (Time.Hour([Debut]) >= 5 and Time.Hour([Debut]) < 11 and Date.DayOfWeek([Jour], Day.Monday) = 5) then "Matin" 
    
    else if 
    
    (Time.Hour([Debut]) >= 11 and Time.Hour([Debut]) < 17 and Date.DayOfWeek([Jour], Day.Monday) = 5) then "Après-midi" 
    
    else "Nuit")

     

    Phil


    If I answered your question please mark my post as the solution.
    If you liked my answer click on the Thumbs Up icon.

  • PierreM52 

     

    Are you trying this in Power Query or DAX ?

    ________________________

    If my answer was helpful, please consider Accept it as the solution to help the other members find it

    Click on the Thumbs-Up icon if you like this reply 🙂

    YouTube  LinkedIn