Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Trouble with Nested "If" Statements

I'm trying to calculate an Average Headcount by department.  This is done by summing the starting and ending headcounts and dividing by 2.  However, if either the starting or ending headcount are 0 (blank), then I want the average to use the other number.  

 

It is working correctly 1-way, but not the other way.  See the table below for the results I'm getting.  If STARTING HEADCOUNT is blank, then it's calculating correctly and using the ENDING HEADCOUNT for the average.  But if ENDING HEADCOUNT is blank, it's still trying to calculate (STARTING + ENDING)/2 which is resulting in the wrong number given the blank.  

 

I'm using nested IF statement in DAX like this:

IF([Starting Headcount]=blank (), [Ending Headcount], IF([Ending Headcount]=blank(), [Starting Headcount], ([Starting Headcount] + [Ending Headcount]/2)

 

Any help is much appreciated

 

 

DepartmentStarting HeadcountEnding HeadcountAverage Headcount (Dynamic)
Sales 1212
Manufacturing111513
Marketing21 10.5

 

  • Anonymous ,

     

    Modify the calculate column like below:

    Average Headcount (Dynamic) = 
    IF (
        [Starting Headcount] = BLANK ()
            && [Ending Headcount] = BLANK (),
        BLANK (),
        IF (
            [Starting Headcount] = BLANK ()
                && [Ending Headcount] <> BLANK (),
            [Ending Headcount],
            IF (
                [Ending Headcount] = BLANK ()
                    && [Starting Headcount] <> BLANK (),
                [Starting Headcount],
                ( [Starting Headcount] + [Ending Headcount] ) / 2
            )
        )
    )

     

     

    Community Support Team _ Jimmy Tao

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

4 Replies

  • I would try pivoting your data so your actual data is describing the departments (your departments become your columns).  That way you can use the AVERAGE function or at least be able to use your data in a column structure rather than crossing rows.

    • Nolock's avatar
      Nolock
      Icon for Resident Rockstar rankResident Rockstar

      The idea with pivoting is very elegant :smileyhappy:

       

      But if you couldn't use it, try following:

       

      AVG =
      VAR SUM_OF = TestTable[Column2] + TestTable[Column3]
      VAR CNT_OF =
          ( NOT ISBLANK ( TestTable[Column2] ) ) + ( NOT ISBLANK ( TestTable[Column3] ) )
      RETURN
          DIVIDE ( SUM_OF; CNT_OF; 0 )
  • v-yuta-msft's avatar
    v-yuta-msft
    Icon for Community Support rankCommunity Support

    Anonymous ,

     

    Modify the calculate column like below:

    Average Headcount (Dynamic) = 
    IF (
        [Starting Headcount] = BLANK ()
            && [Ending Headcount] = BLANK (),
        BLANK (),
        IF (
            [Starting Headcount] = BLANK ()
                && [Ending Headcount] <> BLANK (),
            [Ending Headcount],
            IF (
                [Ending Headcount] = BLANK ()
                    && [Starting Headcount] <> BLANK (),
                [Starting Headcount],
                ( [Starting Headcount] + [Ending Headcount] ) / 2
            )
        )
    )

     

     

    Community Support Team _ Jimmy Tao

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thank you!  This worked well.