Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8
Default Average last seven if not zero

I need to average the last seven numbers (for a week) that aren't zero
in a column. Sometimes there are no zero days during the week,
sometimes one, even up to seven. It changes during the year. Ex.
Monday thru Sunday may all be more than zero, but if Thursday thru
Sunday were zero, I need to include the four previous days in my
average:
A1=10
A2=5
A3=6
A4=0
A5=0
A6=9
A7=10
A8=8
A9=10
A10=15
A11=0
A12=3

In above instance, I need average of A3,A6,A7,A8,A9,A10,A12. (In
column B). I do the average in column B for the whole year, so i need
a running average of the last seven days.

Thank you, Tim
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Average last seven if not zero

In cell B7, array enter the formula (enter using Ctrl-Shift-Enter)

=AVERAGE(IF(OFFSET(A7,-6,0,7,1)0,OFFSET(A7-6,0,7,1)))

Then copy down as far as you need.

If you need to include negative numbers, change the to <

HTH,
Bernie
MS Excel MVP


"Tim" wrote in message
...
I need to average the last seven numbers (for a week) that aren't zero
in a column. Sometimes there are no zero days during the week,
sometimes one, even up to seven. It changes during the year. Ex.
Monday thru Sunday may all be more than zero, but if Thursday thru
Sunday were zero, I need to include the four previous days in my
average:
A1=10
A2=5
A3=6
A4=0
A5=0
A6=9
A7=10
A8=8
A9=10
A10=15
A11=0
A12=3

In above instance, I need average of A3,A6,A7,A8,A9,A10,A12. (In
column B). I do the average in column B for the whole year, so i need
a running average of the last seven days.

Thank you, Tim



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Average last seven if not zero

I'm sorry - I mis-read your post. The easiest single cell solution would involve a user-defined
function, used like

=Average7(A7)

then copied down.

Paste this code into a standard codemodule:

Function Average7(inCell As Range) As Double
Dim myC As Integer
Dim myR As Long
Average7 = 0
myC = 0
For myR = inCell.Row To 1 Step -1
If Cells(myR, inCell.Column).Value 0 Then
Average7 = Average7 + Cells(myR, inCell.Column).Value
myC = myC + 1
If myC = 7 Then GoTo found7
End If
Next myR
found7:
Average7 = Average7 / Application.Min(7, myC)
End Function


--
HTH,
Bernie
MS Excel MVP


"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
In cell B7, array enter the formula (enter using Ctrl-Shift-Enter)

=AVERAGE(IF(OFFSET(A7,-6,0,7,1)0,OFFSET(A7-6,0,7,1)))

Then copy down as far as you need.

If you need to include negative numbers, change the to <

HTH,
Bernie
MS Excel MVP


"Tim" wrote in message
...
I need to average the last seven numbers (for a week) that aren't zero
in a column. Sometimes there are no zero days during the week,
sometimes one, even up to seven. It changes during the year. Ex.
Monday thru Sunday may all be more than zero, but if Thursday thru
Sunday were zero, I need to include the four previous days in my
average:
A1=10
A2=5
A3=6
A4=0
A5=0
A6=9
A7=10
A8=8
A9=10
A10=15
A11=0
A12=3

In above instance, I need average of A3,A6,A7,A8,A9,A10,A12. (In
column B). I do the average in column B for the whole year, so i need
a running average of the last seven days.

Thank you, Tim





  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8
Default Average last seven if not zero

On Nov 13, 11:19*am, "Bernie Deitrick" <deitbe @ consumer dot org
wrote:
I'm sorry - I mis-read your post. *The easiest single cell solution would involve a user-defined
function, used like

=Average7(A7)

then copied down.

Paste this code into a standard codemodule:

Function Average7(inCell As Range) As Double
Dim myC As Integer
Dim myR As Long
Average7 = 0
myC = 0
For myR = inCell.Row To 1 Step -1
* *If Cells(myR, inCell.Column).Value 0 Then
* * * Average7 = Average7 + Cells(myR, inCell.Column).Value
* * * myC = myC + 1
* * * If myC = 7 Then GoTo found7
* *End If
Next myR
found7:
Average7 = Average7 / Application.Min(7, myC)
End Function

--
HTH,
Bernie
MS Excel MVP

"Bernie Deitrick" <deitbe @ consumer dot org wrote in . ..



In cell B7, array enter the formula (enter using Ctrl-Shift-Enter)


=AVERAGE(IF(OFFSET(A7,-6,0,7,1)0,OFFSET(A7-6,0,7,1)))


Then copy down as far as you need.


If you need to include negative numbers, change the to <


HTH,
Bernie
MS Excel MVP


"Tim" wrote in message
....
I need to average the last seven numbers (for a week) that aren't zero
in a column. Sometimes there are no zero days during the week,
sometimes one, even up to seven. It changes during the year. Ex.
Monday thru Sunday may all be more than zero, but if Thursday thru
Sunday were zero, I need to include the four previous days in my
average:
A1=10
A2=5
A3=6
A4=0
A5=0
A6=9
A7=10
A8=8
A9=10
A10=15
A11=0
A12=3


In above instance, I need average of A3,A6,A7,A8,A9,A10,A12. (In
column B). I do the average in column B for the whole year, so i need
a running average of the last seven days.


Thank you, Tim- Hide quoted text -


- Show quoted text -


Wow, that was fast. I'll give it a try. Thank You!
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,501
Default Average last seven if not zero

If you want a formula

=AVERAGE(LOOKUP(LARGE(INDEX(ISNUMBER(A1:A100)*(A1: A100<0)*ROW(A1:A100),0),{7,6,5,4,3,2,1}),ROW(A1:A 100),A1:A100))

'This is an array formula which must be entered with CTRL+Shift+Enter and NOT
'just enter. If you do it correct then Excel will put curly brackets around
'the formula{}. You can't type these yourself. If you Edit the ranges
'then you must re-enter as An array

Mike

"Tim" wrote:

On Nov 13, 11:19 am, "Bernie Deitrick" <deitbe @ consumer dot org
wrote:
I'm sorry - I mis-read your post. The easiest single cell solution would involve a user-defined
function, used like

=Average7(A7)

then copied down.

Paste this code into a standard codemodule:

Function Average7(inCell As Range) As Double
Dim myC As Integer
Dim myR As Long
Average7 = 0
myC = 0
For myR = inCell.Row To 1 Step -1
If Cells(myR, inCell.Column).Value 0 Then
Average7 = Average7 + Cells(myR, inCell.Column).Value
myC = myC + 1
If myC = 7 Then GoTo found7
End If
Next myR
found7:
Average7 = Average7 / Application.Min(7, myC)
End Function

--
HTH,
Bernie
MS Excel MVP

"Bernie Deitrick" <deitbe @ consumer dot org wrote in . ..



In cell B7, array enter the formula (enter using Ctrl-Shift-Enter)


=AVERAGE(IF(OFFSET(A7,-6,0,7,1)0,OFFSET(A7-6,0,7,1)))


Then copy down as far as you need.


If you need to include negative numbers, change the to <


HTH,
Bernie
MS Excel MVP


"Tim" wrote in message
....
I need to average the last seven numbers (for a week) that aren't zero
in a column. Sometimes there are no zero days during the week,
sometimes one, even up to seven. It changes during the year. Ex.
Monday thru Sunday may all be more than zero, but if Thursday thru
Sunday were zero, I need to include the four previous days in my
average:
A1=10
A2=5
A3=6
A4=0
A5=0
A6=9
A7=10
A8=8
A9=10
A10=15
A11=0
A12=3


In above instance, I need average of A3,A6,A7,A8,A9,A10,A12. (In
column B). I do the average in column B for the whole year, so i need
a running average of the last seven days.


Thank you, Tim- Hide quoted text -


- Show quoted text -


Wow, that was fast. I'll give it a try. Thank You!



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8
Default Average last seven if not zero

On Nov 13, 11:19*am, "Bernie Deitrick" <deitbe @ consumer dot org
wrote:
I'm sorry - I mis-read your post. *The easiest single cell solution would involve a user-defined
function, used like

=Average7(A7)

then copied down.

Paste this code into a standard codemodule:

Function Average7(inCell As Range) As Double
Dim myC As Integer
Dim myR As Long
Average7 = 0
myC = 0
For myR = inCell.Row To 1 Step -1
* *If Cells(myR, inCell.Column).Value 0 Then
* * * Average7 = Average7 + Cells(myR, inCell.Column).Value
* * * myC = myC + 1
* * * If myC = 7 Then GoTo found7
* *End If
Next myR
found7:
Average7 = Average7 / Application.Min(7, myC)
End Function

--
HTH,
Bernie
MS Excel MVP

"Bernie Deitrick" <deitbe @ consumer dot org wrote in . ..



In cell B7, array enter the formula (enter using Ctrl-Shift-Enter)


=AVERAGE(IF(OFFSET(A7,-6,0,7,1)0,OFFSET(A7-6,0,7,1)))


Then copy down as far as you need.


If you need to include negative numbers, change the to <


HTH,
Bernie
MS Excel MVP


"Tim" wrote in message
....
I need toaveragethe last seven numbers (for a week) that aren't zero
in a column. Sometimes there are no zero days during the week,
sometimes one, even up to seven. It changes during the year. Ex.
Monday thru Sunday may all be more than zero, but if Thursday thru
Sunday were zero, I need to include the four previous days in my
average:
A1=10
A2=5
A3=6
A4=0
A5=0
A6=9
A7=10
A8=8
A9=10
A10=15
A11=0
A12=3


In above instance, I needaverageof A3,A6,A7,A8,A9,A10,A12. (In
column B). I do theaveragein column B for the whole year, so i need
a runningaverageof the last seven days.


Thank you, Tim- Hide quoted text -


- Show quoted text -


Thanks Bernie, worked perfect. Thanks for answering Mike. I got
Bernie's UDF to do just what I needed.
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
A formula to AVERAGE IF but only average a set number of values [email protected] Excel Worksheet Functions 2 January 31st 08 08:28 PM
Find monthly average but have average automatically configured kimbafred Excel Discussion (Misc queries) 2 August 8th 07 12:28 AM
Error Handling #N/A with AVERAGE Function - Average of values in Row Sam via OfficeKB.com Excel Worksheet Functions 13 July 31st 05 03:59 PM
Weighed Average of a weiged average when there are blanks krl - ExcelForums.com Excel Discussion (Misc queries) 1 July 6th 05 07:37 PM
how does one convert text to a formula "average(A:A)" to =average( phshirk Excel Worksheet Functions 4 April 14th 05 01:20 AM


All times are GMT +1. The time now is 03:00 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"