Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Calculate Max, Min and Avg IF filter

Hello community, 

 

I've been trying to find a solution with the below scenario. I hope someone can help me.

 

Item IDYearValue
120083
120114
120107
120028
220101
220113
220155
220142

 

My data consists of multiple item ID's. Most items have multiple entries. I am trying to calculate the max, avg, and min of the value column. I have multiple scenarios:

 

1. If an item has a value in 2014 or after, then I only want to include the rows in 2014 and after.

2. If an item has no rows in 2014 or after, calculate the rows between 2003 and 2014 only.

 

For the above table, the output should be something like this:

Item 1: (2002 should not be included in the calculations)

Max: 7

Min: 3

Avg: 4.6

 

Item 2: (only 2014 and 2015 should be included in the calculations)

Max: 5

Min: 2

Avg: 3.5

 

My final output should look like this:

Row IDMaxMinAvg
1734.6
2523.5

 

I tried multiple formulas but with no luck, I keep on getting errors.

 

Please save me! 

 

 
  • Anonymous

     

    Try this pattern

     

    Avg =
    IF (
        MAX ( Table1[Year] ) > 2013,
        CALCULATE ( AVERAGE ( Table1[Value] ), Table1[Year] > 2013 ),
        CALCULATE (
            AVERAGE ( Table1[Value] ),
            Table1[Year] <= 2014,
            Table1[Year] >= 2003
        )
    )
    
  • Arnault_'s avatar
    Arnault_
    7 years ago

    Hi Anonymous,

     

    The solution proposed by Zubair_Muhammad works. Maybe you need to change your "date" format.

     

     

     
    Min = 
    IF (
        MAX ( Data[Year] ) > 2013;
        CALCULATE ( MIN ( Data[Value] ); Data[Year] > 2013 );
        CALCULATE (
            MIN ( Data[Value] );
            Data[Year] <= 2014;
             Data[Year] >= 2003
        )
    )

     

     

    Max = 
    IF (
        MAX ( Data[Year] ) > 2013;
        CALCULATE ( MAX ( Data[Value] ); Data[Year] > 2013 );
        CALCULATE (
            MAX ( Data[Value] );
            Data[Year] <= 2014;
             Data[Year] >= 2003
        )
    )

     

     

6 Replies

  • Zubair_Muhammad's avatar
    Zubair_Muhammad
    Icon for Community Champion rankCommunity Champion

    Anonymous

     

    Try this pattern

     

    Avg =
    IF (
        MAX ( Table1[Year] ) > 2013,
        CALCULATE ( AVERAGE ( Table1[Value] ), Table1[Year] > 2013 ),
        CALCULATE (
            AVERAGE ( Table1[Value] ),
            Table1[Year] <= 2014,
            Table1[Year] >= 2003
        )
    )
    
    • Anonymous's avatar
      Anonymous
      Not applicable

      It still calculates all years. :(

      • Arnault_'s avatar
        Arnault_
        Icon for Resolver III rankResolver III

        Hi Anonymous,

         

        The solution proposed by Zubair_Muhammad works. Maybe you need to change your "date" format.

         

         

         
        Min = 
        IF (
            MAX ( Data[Year] ) > 2013;
            CALCULATE ( MIN ( Data[Value] ); Data[Year] > 2013 );
            CALCULATE (
                MIN ( Data[Value] );
                Data[Year] <= 2014;
                 Data[Year] >= 2003
            )
        )

         

         

        Max = 
        IF (
            MAX ( Data[Year] ) > 2013;
            CALCULATE ( MAX ( Data[Value] ); Data[Year] > 2013 );
            CALCULATE (
                MAX ( Data[Value] );
                Data[Year] <= 2014;
                 Data[Year] >= 2003
            )
        )