Averageif

Friday Challenge – AverageIf NOT Blank or NOT Zero – NOT So Easy

As an Excel dashboard engineer you will often need to create complex calculations for your charts, tables and displays. So today’s challenge is one that was sent in by a reader from another of my posts.

Excel-formulas-average-a-range-and-ignore-zeros-0-value

“Hi really need your help, I would like to know how I can average different cells in different columns and ignoring zeros. For e.g take columns a to k, a will have an average that i need then c will have an average that i need and then e etc. The other columns will have other figures which I do not need. Please help i have used the following but did not help, =AverageIF(c3,e3,g3,i3,k3,”>0″) I have tried messing about with this but not sure where I am going wrong your help will be appreciated, many thanks in advance”  – Shane

It seems like an easy solution, but the trick is that we need to calculate this averageif on non-adjacent columns of data. So I have set up some data for us for this challenge and it looks like this: Data for AverageIf Exclude Zeros and Blanks Challenge

Can you figure it out? Leave a comment with your solution for cell N2 and it should work for all the rows with zeros, blanks and both zeros and blanks: SpreadSheet for AverageIf Exclude Zeros and Blanks Challenge

 

Here is the challenge data file for download: Challenge-Data-Average-Excluding-Zeros-and-Blanks-for-Non-Adjacent-Columns.xlsx

 

Good luck and thanks for playing the home game!

 

Steve=True

Reader discussion

Comments preserved from the original page. New comments are closed.

Reader

add a row K to put an X identifying which columns (c,e,g,i,k) to average and then use this formula
=AVERAGEIFS($B5:$K5,$B$6:$K$6,”X”,$B5:$K5,””””,$B5:$K5,”0″)

Reader

Thanks Ken. However, I think you may have meant Row 6 instead of K. Also, should the criteria be >0 instead of “0”? However, when I implement that, I am getting a #Div/0 error. Steve=True

Reader

Thanks again Ken, when I retype the formula, it seems to work for me. Not sure why the copy/paste isn’t. Also, you may not need the $b5:$k5, “””” criteria range and criteria as Excel appears to not include the blanks anyway. Thanks again. Steve=True

Reader

Hi Steve

This works for me:
=AVERAGEIFS(B5:K5,$B$6:$K$6,”X”,B5:K5,””,B5:K5,”>0″)

Reader

Thanks Xlarium, for some reason when I copy and paste, then redo the ” (quotes), I keep getting a #Div/0 error. When I typed it fresh, it worked. One thing, I don’t think you need the B5:K5,”” criteria range and criteria as Excel already ignores blanks in the Average If. Thanks again! Steve=True

Reader

=AVERAGEIF(C6:C6:E6:E6:G6:G6:I6:I6:K6:K6,”>0″)

I believe this works!

Reader

Nice one Laura, it worked for me as well. Great job. Steve=True

Reader

Hi Laura, as I investigated this solution further, it appears that Excel converts your range to the entire range and therefore, it doesn’t work for what we need here. For instance, if you change one of the numbers in cell B6 which should not be in the non-contiguous range, it will get calculated into the average.

Reader

I took from Ken’s idea and cleaned it up a little. Still have the add the “X” to row 6 though. =AVERAGEIFS(B2:K2,$B$6:$K$6,”X”,B2:K2,”0″)

Reader

Cool!

Reader

=SUM(B2:K2)/(COUNTA(B2:K2)-COUNTIF(B2:K2,0))

Reader

Thanks ME – Unfortunately, this one doesn’t seem to work over the non-contiguous range. If you put a value in the D column, it gets calculated in your formula. Thanks for trying. Steve=True

Reader

Maybe a bit complicated, but without any additional row:

=SUMPRODUCT((MOD(COLUMN(C2:K2),2)=1)*(LEN(C2:K2)>0)*(C2:K20)*(C2:K2))/SUMPRODUCT((MOD(COLUMN(C2:K2),2)=1)*(LEN(C2:K2)>0)*(C2:K20))

Reader

Thanks Pepe.