How do I calculate an average of the last 5 nonblank cells in a row?

T

tmsciulli

I am trying to average only the last 5 nonblank values in a row of
cells. Is this possible?
 
G

Guest

Use this custom function
call with
=AverageLast5("Q") where Q is the column

Note: if there are less than 5 items in the row it will average only the
number of cells with values.

Function AverageLast5(MyCol As String)

LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row

RowCount = LastRow
CellCount = 0
Total = 0
Do While (RowCount > 0) And (CellCount <> 5)

If Not IsEmpty(Cells(RowCount, MyCol)) Then

Total = Total + Cells(RowCount, MyCol)
CellCount = CellCount + 1
End If

RowCount = RowCount - 1
Loop
AverageLast5 = Total / CellCount
End Function
 
G

Guest

=MID(IF(ROW(A1:A30)>=LARGE(IF(ISNUMBER(A1:A30),IF(A1:A30>0,ROW(A1:A30))),MIN(B1,COUNTIF(A1:A30,">0"))),IF(A1:A30>0,A1:A30)))

INSERT AND HIT CTRL+SHIFT+ENTER

"(e-mail address removed)" skrev:
 
G

Guest

the functon will not work if the total last value in the same column as the
data. I'm search for the last value in the row.

If you want the total to be at the end of the data then
change from:
LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row

to:
LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row - 1
 
G

Guest

put 5 in cell B1


"excelent" skrev:
=MID(IF(ROW(A1:A30)>=LARGE(IF(ISNUMBER(A1:A30),IF(A1:A30>0,ROW(A1:A30))),MIN(B1,COUNTIF(A1:A30,">0"))),IF(A1:A30>0,A1:A30)))

INSERT AND HIT CTRL+SHIFT+ENTER

"(e-mail address removed)" skrev:
 
G

Guest

UPS ur right Toppers
=AVERAGE(IF(ROW(A1:A30)>=LARGE(IF(ISNUMBER(A1:A30),IF(A1:A30>0,ROW(A1:A30))),MIN(B1,COUNTIF(A1:A30,">0"))),IF(A1:A30>0,A1:A30)))


"Toppers" skrev:
 
G

Guest

another way
=AVERAGE(LARGE(A1:A3000,ROW(INDIRECT("1:" & 5))))
hit ctrl+shift+enter

returns average of last 5 cells in range A1:A3000


"excelent" skrev:
 
G

Guest

No it doesn't: it's the largest 5 values!

excelent said:
another way
=AVERAGE(LARGE(A1:A3000,ROW(INDIRECT("1:" & 5))))
hit ctrl+shift+enter

returns average of last 5 cells in range A1:A3000


"excelent" skrev:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top