I want to average every 5 rows but also to exclude in the average values that are less than 50. This is the command to average every 5 rows.
=AVERAGE(OFFSET($L$3,(ROW()ROW($P$2))*5,,5))
This is the command to exclude values less than 50
=AVERAGEIF(L3:L8,">50")
How do I combine those two in one command?
Thanks to a colleague of mine, the following works like a gem.
=IFERROR(AVERAGEIF(OFFSET($L$3,(ROW()ROW($P$2))*5,,5),">50"),0)
Answer：
As long as you have Excel 2016, a SUMPRODUCT
formula will work.
=SUMPRODUCT((MOD(ROW($A$1:$A100),5)=0)*($A$1:$A$100<50)*$A$1:$A$100)/SUMPRODUCT((MOD(ROW($A$1:$A100),5)=0)*($A$1:$A$100<50)*1)
I assumed your data was in A1:A100
so update that as needed. And in the MOD
formula, I used 5 for ever 5th row. If you need to change that, change the 5 in MOD
formulas. Lastly, the formula does not include the value 50 since you stated you wanted less than 50.
Answer：
‘Tiny’ Differences
Correction
=IFERROR(AVERAGEIF(OFFSET(L$3,(ROW()ROW(L$2))*5,,5),">50"),0)
Visualize
Let’s first visualize what you’re actually doing.
For every five rows in column L
you are displaying the average of the values, if they are greater than or equal to 50. (in this example) in column G
:
For L3:L8 in G2,
for L9:L13 in G3,
for L14:L18 in G4 etc.
Issues

The 1st issue is that the formula is written exclusively for the
2nd row. If you want the first result to be displayed in the first row, the formula will result in aREF!
error.If you want to display the first result in the 1st row you have to
changeL$2
toL$1
:=IFERROR(AVERAGEIF(OFFSET(L$3,(ROW()ROW(L$1))*5,,5),">50"),0)
or for the 3rd row you have to change
L$2
toL$3
:=IFERROR(AVERAGEIF(OFFSET(L$3,(ROW()ROW(L$3))*5,,5),">50"),0)

The 2nd issue is that you are doing something in column
L
and for
no obvious reason you are using columnP
in your formula. You could
have used any columnZ
,AN
orCG
, but your doing stuff in
columnL
, so useL
. 
The 3rd issue is that you have locked the columns
$L
which means where
ever you put the formula in a single row, the result will be the same. If
you don’t lock them, you can copy the formula e.g. to the right and
it will display the results for columnsM
,N
,O
etc.:
Other Formulas
=SUM(OFFSET(L$3,(ROW()ROW(L$2))*5,,5))
=COUNT(OFFSET(L$3,(ROW()ROW(L$2))*5,,5))
=AVERAGE(OFFSET(L$3,(ROW()ROW(L$2))*5,,5))
=SUMIF(OFFSET(L$3,(ROW()ROW(L$2))*5,,5),">50")
=COUNTIF(OFFSET(L$3,(ROW()ROW(L$2))*5,,5),">50")
AVERAGEIF
is available in Excel from version 2007, but for older versions the following formula can be used instead:
=IF(COUNTIF(OFFSET(L$3,(ROW()ROW(L$2))*5,,5),">"&50)=0,0,SUMIF(OFFSET(L$3,(ROW()ROW(L$2))*5,,5),">"&50)/COUNTIF(OFFSET(L$3,(ROW()ROW(L$2))*5,,5),">"&50))
It first checks if COUNTIF
results in 0
. If it does it displays 0
, otherwise it divides SUMIF
with COUNTIF
.
Tags: excelexcel