ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Problems with working out averages with large amounts of data (https://www.excelbanter.com/excel-worksheet-functions/179801-problems-working-out-averages-large-amounts-data.html)

Mindblank

Problems with working out averages with large amounts of data
 
I have a problem with working out averages that hopefully someone one here
can help with.

Please bear with me as i try to explain. Here goes: I currently have a
worksheet that contains two columns, column A has the date and time for data
entries over a year. In each day there are a varying amount of data entries.
Column B is the data entry for each given time.

for example

A1 = Date/Time B1 = data
A2 = 24/01/2007 17:15 B2 = 1.5
A3 = 24/01/2007 18:00 B3 = 1.2
A26 = 28/01/2007 19:00 B26 =1.8
A245=04/06/2007 09:15 B245 = 0.6
and so on....

Now the problem is that i have over a full years worth of data in this
format and each day has varying amounts of data entries ranging from 10
entries to over 30. The way i started to address this problem was to set up
an average function of all the results for each day but as i have found out
the function cannot be copied as each day has a different amount of readings
and therefore the data series for each function changes per day. Doing it
this way means creating 365+ functions and then going through each forumla to
check that the data series covers the correct data entries. Due to the fact i
have over 39000 data entries this takes hours and i hope there is someone out
there who can suggest a quicker way of doing this?

is there any way i can set up a function to isolate entries per day and then
average them?

many thanks in advance to anyone who can help

Mindblank

Teethless mama

Problems with working out averages with large amounts of data
 
=IF(ISERR(AVERAGE(IF($A$2:$A$40000=DATE(2007,1,ROW S($1:1)),$B$2:$B$40000))),"",AVERAGE(IF($A$2:$A$40 000=DATE(2007,1,ROWS($1:1)),$B$2:$B$40000)))

ctrl+shift+enter, not just enter
copy down as far as needed


indblank" wrote:

I have a problem with working out averages that hopefully someone one here
can help with.

Please bear with me as i try to explain. Here goes: I currently have a
worksheet that contains two columns, column A has the date and time for data
entries over a year. In each day there are a varying amount of data entries.
Column B is the data entry for each given time.

for example

A1 = Date/Time B1 = data
A2 = 24/01/2007 17:15 B2 = 1.5
A3 = 24/01/2007 18:00 B3 = 1.2
A26 = 28/01/2007 19:00 B26 =1.8
A245=04/06/2007 09:15 B245 = 0.6
and so on....

Now the problem is that i have over a full years worth of data in this
format and each day has varying amounts of data entries ranging from 10
entries to over 30. The way i started to address this problem was to set up
an average function of all the results for each day but as i have found out
the function cannot be copied as each day has a different amount of readings
and therefore the data series for each function changes per day. Doing it
this way means creating 365+ functions and then going through each forumla to
check that the data series covers the correct data entries. Due to the fact i
have over 39000 data entries this takes hours and i hope there is someone out
there who can suggest a quicker way of doing this?

is there any way i can set up a function to isolate entries per day and then
average them?

many thanks in advance to anyone who can help

Mindblank


Sandy Mann

Problems with working out averages with large amounts of data
 
Minor point, I thnk that the OP has a Date and Time in the same cell so your
formula will need INT()'s:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$40000)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$40000))),"",AVERAGE(IF(INT($ A$2:$A$40000)=DATE(2007,1,ROWS($1:1)),$B$2:$B$4000 0)))

Just another alternative:

=SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))*$B$2:$B$4000)/MAX(SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))),1)

(You beat me to it <g) I don't know how having two SUMPRODUCTS() will
affect the efficiency

--
Regards,

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Teethless mama" wrote in message
...
=IF(ISERR(AVERAGE(IF($A$2:$A$40000=DATE(2007,1,ROW S($1:1)),$B$2:$B$40000))),"",AVERAGE(IF($A$2:$A$40 000=DATE(2007,1,ROWS($1:1)),$B$2:$B$40000)))

ctrl+shift+enter, not just enter
copy down as far as needed


indblank" wrote:

I have a problem with working out averages that hopefully someone one
here
can help with.

Please bear with me as i try to explain. Here goes: I currently have a
worksheet that contains two columns, column A has the date and time for
data
entries over a year. In each day there are a varying amount of data
entries.
Column B is the data entry for each given time.

for example

A1 = Date/Time B1 = data
A2 = 24/01/2007 17:15 B2 = 1.5
A3 = 24/01/2007 18:00 B3 = 1.2
A26 = 28/01/2007 19:00 B26 =1.8
A245=04/06/2007 09:15 B245 = 0.6
and so on....

Now the problem is that i have over a full years worth of data in this
format and each day has varying amounts of data entries ranging from 10
entries to over 30. The way i started to address this problem was to set
up
an average function of all the results for each day but as i have found
out
the function cannot be copied as each day has a different amount of
readings
and therefore the data series for each function changes per day. Doing it
this way means creating 365+ functions and then going through each
forumla to
check that the data series covers the correct data entries. Due to the
fact i
have over 39000 data entries this takes hours and i hope there is someone
out
there who can suggest a quicker way of doing this?

is there any way i can set up a function to isolate entries per day and
then
average them?

many thanks in advance to anyone who can help

Mindblank





Mindblank

Problems with working out averages with large amounts of data
 
thanks for the suggestions, a slight point does it make a difference what
format the date/time is shown in column A? just now the format is dd/mm/yyyy
hh/mm.

also the range of cells i have is A2:A39106 AND B2:B39106 so would i
presumably the function would look like:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$39106)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$39106))),"",AVERAGE(IF(INT($ A$2:$A$39106)=DATE(2007,1,ROWS($1:1)),$B$2:$B$3910 6)))

thanks again for all of your help, usually ok with basic functions but this
has thrown me

cheers

mindblank

"Sandy Mann" wrote:

Minor point, I thnk that the OP has a Date and Time in the same cell so your
formula will need INT()'s:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$40000)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$40000))),"",AVERAGE(IF(INT($ A$2:$A$40000)=DATE(2007,1,ROWS($1:1)),$B$2:$B$4000 0)))

Just another alternative:

=SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))*$B$2:$B$4000)/MAX(SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))),1)

(You beat me to it <g) I don't know how having two SUMPRODUCTS() will
affect the efficiency

--
Regards,

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Teethless mama" wrote in message
...
=IF(ISERR(AVERAGE(IF($A$2:$A$40000=DATE(2007,1,ROW S($1:1)),$B$2:$B$40000))),"",AVERAGE(IF($A$2:$A$40 000=DATE(2007,1,ROWS($1:1)),$B$2:$B$40000)))

ctrl+shift+enter, not just enter
copy down as far as needed


indblank" wrote:

I have a problem with working out averages that hopefully someone one
here
can help with.

Please bear with me as i try to explain. Here goes: I currently have a
worksheet that contains two columns, column A has the date and time for
data
entries over a year. In each day there are a varying amount of data
entries.
Column B is the data entry for each given time.

for example

A1 = Date/Time B1 = data
A2 = 24/01/2007 17:15 B2 = 1.5
A3 = 24/01/2007 18:00 B3 = 1.2
A26 = 28/01/2007 19:00 B26 =1.8
A245=04/06/2007 09:15 B245 = 0.6
and so on....

Now the problem is that i have over a full years worth of data in this
format and each day has varying amounts of data entries ranging from 10
entries to over 30. The way i started to address this problem was to set
up
an average function of all the results for each day but as i have found
out
the function cannot be copied as each day has a different amount of
readings
and therefore the data series for each function changes per day. Doing it
this way means creating 365+ functions and then going through each
forumla to
check that the data series covers the correct data entries. Due to the
fact i
have over 39000 data entries this takes hours and i hope there is someone
out
there who can suggest a quicker way of doing this?

is there any way i can set up a function to isolate entries per day and
then
average them?

many thanks in advance to anyone who can help

Mindblank






Sandy Mann

Problems with working out averages with large amounts of data
 
The DATE() function calculates a number, the number of days since 1/1/1900,
(with an error because it assumes wrongly that 1900 was a leap year). It
follows therefore that the format makes no difference. I use dd/mm/yy and
Teethless mama's formula works for me with the INT() added.

I omitted to say in my post that D2 in my formula should contain the date
1/1/2007 and being as it uses SPMPRODUCT() does not have to be array
entered.

--
HTH

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Mindblank" wrote in message
...
thanks for the suggestions, a slight point does it make a difference what
format the date/time is shown in column A? just now the format is
dd/mm/yyyy
hh/mm.

also the range of cells i have is A2:A39106 AND B2:B39106 so would i
presumably the function would look like:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$39106)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$39106))),"",AVERAGE(IF(INT($ A$2:$A$39106)=DATE(2007,1,ROWS($1:1)),$B$2:$B$3910 6)))

thanks again for all of your help, usually ok with basic functions but
this
has thrown me

cheers

mindblank

"Sandy Mann" wrote:

Minor point, I thnk that the OP has a Date and Time in the same cell so
your
formula will need INT()'s:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$40000)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$40000))),"",AVERAGE(IF(INT($ A$2:$A$40000)=DATE(2007,1,ROWS($1:1)),$B$2:$B$4000 0)))

Just another alternative:

=SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))*$B$2:$B$4000)/MAX(SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))),1)

(You beat me to it <g) I don't know how having two SUMPRODUCTS() will
affect the efficiency

--
Regards,

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Teethless mama" wrote in
message
...
=IF(ISERR(AVERAGE(IF($A$2:$A$40000=DATE(2007,1,ROW S($1:1)),$B$2:$B$40000))),"",AVERAGE(IF($A$2:$A$40 000=DATE(2007,1,ROWS($1:1)),$B$2:$B$40000)))

ctrl+shift+enter, not just enter
copy down as far as needed


indblank" wrote:

I have a problem with working out averages that hopefully someone one
here
can help with.

Please bear with me as i try to explain. Here goes: I currently have a
worksheet that contains two columns, column A has the date and time
for
data
entries over a year. In each day there are a varying amount of data
entries.
Column B is the data entry for each given time.

for example

A1 = Date/Time B1 = data
A2 = 24/01/2007 17:15 B2 = 1.5
A3 = 24/01/2007 18:00 B3 = 1.2
A26 = 28/01/2007 19:00 B26 =1.8
A245=04/06/2007 09:15 B245 = 0.6
and so on....

Now the problem is that i have over a full years worth of data in this
format and each day has varying amounts of data entries ranging from
10
entries to over 30. The way i started to address this problem was to
set
up
an average function of all the results for each day but as i have
found
out
the function cannot be copied as each day has a different amount of
readings
and therefore the data series for each function changes per day. Doing
it
this way means creating 365+ functions and then going through each
forumla to
check that the data series covers the correct data entries. Due to the
fact i
have over 39000 data entries this takes hours and i hope there is
someone
out
there who can suggest a quicker way of doing this?

is there any way i can set up a function to isolate entries per day
and
then
average them?

many thanks in advance to anyone who can help

Mindblank








Mindblank

Problems with working out averages with large amounts of data
 
got it all working now, saved me and my boss a lot of time and energy.

thanks so much for your help

Mindblank

"Sandy Mann" wrote:

The DATE() function calculates a number, the number of days since 1/1/1900,
(with an error because it assumes wrongly that 1900 was a leap year). It
follows therefore that the format makes no difference. I use dd/mm/yy and
Teethless mama's formula works for me with the INT() added.

I omitted to say in my post that D2 in my formula should contain the date
1/1/2007 and being as it uses SPMPRODUCT() does not have to be array
entered.

--
HTH

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Mindblank" wrote in message
...
thanks for the suggestions, a slight point does it make a difference what
format the date/time is shown in column A? just now the format is
dd/mm/yyyy
hh/mm.

also the range of cells i have is A2:A39106 AND B2:B39106 so would i
presumably the function would look like:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$39106)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$39106))),"",AVERAGE(IF(INT($ A$2:$A$39106)=DATE(2007,1,ROWS($1:1)),$B$2:$B$3910 6)))

thanks again for all of your help, usually ok with basic functions but
this
has thrown me

cheers

mindblank

"Sandy Mann" wrote:

Minor point, I thnk that the OP has a Date and Time in the same cell so
your
formula will need INT()'s:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$40000)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$40000))),"",AVERAGE(IF(INT($ A$2:$A$40000)=DATE(2007,1,ROWS($1:1)),$B$2:$B$4000 0)))

Just another alternative:

=SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))*$B$2:$B$4000)/MAX(SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))),1)

(You beat me to it <g) I don't know how having two SUMPRODUCTS() will
affect the efficiency

--
Regards,

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Teethless mama" wrote in
message
...
=IF(ISERR(AVERAGE(IF($A$2:$A$40000=DATE(2007,1,ROW S($1:1)),$B$2:$B$40000))),"",AVERAGE(IF($A$2:$A$40 000=DATE(2007,1,ROWS($1:1)),$B$2:$B$40000)))

ctrl+shift+enter, not just enter
copy down as far as needed


indblank" wrote:

I have a problem with working out averages that hopefully someone one
here
can help with.

Please bear with me as i try to explain. Here goes: I currently have a
worksheet that contains two columns, column A has the date and time
for
data
entries over a year. In each day there are a varying amount of data
entries.
Column B is the data entry for each given time.

for example

A1 = Date/Time B1 = data
A2 = 24/01/2007 17:15 B2 = 1.5
A3 = 24/01/2007 18:00 B3 = 1.2
A26 = 28/01/2007 19:00 B26 =1.8
A245=04/06/2007 09:15 B245 = 0.6
and so on....

Now the problem is that i have over a full years worth of data in this
format and each day has varying amounts of data entries ranging from
10
entries to over 30. The way i started to address this problem was to
set
up
an average function of all the results for each day but as i have
found
out
the function cannot be copied as each day has a different amount of
readings
and therefore the data series for each function changes per day. Doing
it
this way means creating 365+ functions and then going through each
forumla to
check that the data series covers the correct data entries. Due to the
fact i
have over 39000 data entries this takes hours and i hope there is
someone
out
there who can suggest a quicker way of doing this?

is there any way i can set up a function to isolate entries per day
and
then
average them?

many thanks in advance to anyone who can help

Mindblank









Sandy Mann

Problems with working out averages with large amounts of data
 
If I can talk for Teethless mama as well, you're very welcome. Thanks for
the feedback

--

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Mindblank" wrote in message
...
got it all working now, saved me and my boss a lot of time and energy.

thanks so much for your help

Mindblank

"Sandy Mann" wrote:

The DATE() function calculates a number, the number of days since
1/1/1900,
(with an error because it assumes wrongly that 1900 was a leap year). It
follows therefore that the format makes no difference. I use dd/mm/yy
and
Teethless mama's formula works for me with the INT() added.

I omitted to say in my post that D2 in my formula should contain the date
1/1/2007 and being as it uses SPMPRODUCT() does not have to be array
entered.

--
HTH

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Mindblank" wrote in message
...
thanks for the suggestions, a slight point does it make a difference
what
format the date/time is shown in column A? just now the format is
dd/mm/yyyy
hh/mm.

also the range of cells i have is A2:A39106 AND B2:B39106 so would i
presumably the function would look like:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$39106)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$39106))),"",AVERAGE(IF(INT($ A$2:$A$39106)=DATE(2007,1,ROWS($1:1)),$B$2:$B$3910 6)))

thanks again for all of your help, usually ok with basic functions but
this
has thrown me

cheers

mindblank

"Sandy Mann" wrote:

Minor point, I thnk that the OP has a Date and Time in the same cell
so
your
formula will need INT()'s:

=IF(ISERR(AVERAGE(IF(INT($A$2:$A$40000)=DATE(2007, 1,ROWS($1:1)),$B$2:$B$40000))),"",AVERAGE(IF(INT($ A$2:$A$40000)=DATE(2007,1,ROWS($1:1)),$B$2:$B$4000 0)))

Just another alternative:

=SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))*$B$2:$B$4000)/MAX(SUMPRODUCT(--(INT($A$2:$A$4000)=$D$2+ROW()-ROW($A$2))),1)

(You beat me to it <g) I don't know how having two SUMPRODUCTS()
will
affect the efficiency

--
Regards,

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


Replace @mailinator.com with @tiscali.co.uk


"Teethless mama" wrote in
message
...
=IF(ISERR(AVERAGE(IF($A$2:$A$40000=DATE(2007,1,ROW S($1:1)),$B$2:$B$40000))),"",AVERAGE(IF($A$2:$A$40 000=DATE(2007,1,ROWS($1:1)),$B$2:$B$40000)))

ctrl+shift+enter, not just enter
copy down as far as needed


indblank" wrote:

I have a problem with working out averages that hopefully someone
one
here
can help with.

Please bear with me as i try to explain. Here goes: I currently
have a
worksheet that contains two columns, column A has the date and time
for
data
entries over a year. In each day there are a varying amount of data
entries.
Column B is the data entry for each given time.

for example

A1 = Date/Time B1 = data
A2 = 24/01/2007 17:15 B2 = 1.5
A3 = 24/01/2007 18:00 B3 = 1.2
A26 = 28/01/2007 19:00 B26 =1.8
A245=04/06/2007 09:15 B245 = 0.6
and so on....

Now the problem is that i have over a full years worth of data in
this
format and each day has varying amounts of data entries ranging
from
10
entries to over 30. The way i started to address this problem was
to
set
up
an average function of all the results for each day but as i have
found
out
the function cannot be copied as each day has a different amount of
readings
and therefore the data series for each function changes per day.
Doing
it
this way means creating 365+ functions and then going through each
forumla to
check that the data series covers the correct data entries. Due to
the
fact i
have over 39000 data entries this takes hours and i hope there is
someone
out
there who can suggest a quicker way of doing this?

is there any way i can set up a function to isolate entries per day
and
then
average them?

many thanks in advance to anyone who can help

Mindblank












All times are GMT +1. The time now is 09:34 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com