A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Excel » Worksheet Functions
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

Help requested for nested conditional formulas referencing other c



 
 
Thread Tools Display Modes
  #1  
Old March 9th, 2010, 03:48 PM posted to microsoft.public.excel.worksheet.functions
Bermie
external usenet poster
 
Posts: 5
Default Help requested for nested conditional formulas referencing other c

Hello--i can better explain the problem with an example:

24h 1wk change
Person A 1 0 -1
Person B 0 1 1
Person C 0 0 0
Person D 0.25 0.25 0
Person E 0.5
Person F 1 0.5 -0.5
Person G 0 0.75 0.75


What I am trying to do is make three equations:
1 to calculate the average of the values in the 24h column, IF the value is
NOT equal to zero, which I have accomplished with the array formula:
{=AVERAGE(IF(B2:B80, B2:B8, ""))}

here's where things get difficult--now, I want to find the average of the
values in the 1wk column, only if either the values in the 24h OR 1 wk column
are not zero, so the value, in this case, would be=0.5 (from averaging Person
A, B, D, F, and G's 1 wk values). I tried with the following formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), C2:C8, ""))}, but it returns 0.4167
(using the same function, but with countif instead of average, it returns 6
instead of returning 5, so it's adding an extra person's value), so i need
help in retifying this error.

Also, even more difficult:
Finally, i'd like to find the average of the amount of change, ONLY IF
either the 24h or the 1 wk values are not zero, so, in this case, the value
should equal 0.05 (the average change of person A, B, D, F, and G), however,
with the formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), D28, ""))}, i get 0.04167 (again, the
count function gives me 6 instead of 5). I also tried it with the formula:

{=AVERAGE(IF(OR(OFFSET(D28, 0,-2)0, OFFSET(D28, 0, -1)0), D28,
""))}, to the same avail.

Basically, how do i tell it to ONLY COUNT/AVERAGE a value in column D
(change) if either the 24h column (B) or the 1wk column (C) is not zero (will
never be negative, which is why I don't have 0 at the end. I tried it with
the not(X=0) function as well, to no avail)?

When I trace the function, all of the true/false variables are
correct--however, I believe it is actually computing an overall true/false
for the entire "if" and then running the function to calculate the average
for every variable in the respective column (e.g., D2:8) instead of
calculating the average for the cell where the two preceding fit my criteria
(e.g., D2,D3,D5,D7,D8). I basically want it to test the if for two cells in
a row (B2, C2), and, if true, then include D2 in the calculation for the
average of column D, when there is a value other than zero for the preceding
columns (which is why I tried the OFFSET function, but I still got the same
end result).

Also, it does not make a different if I change the order of functions in
terms fo the end results I obtain:
=IF(OR(x,y), AVERAGE(z), "") gives me the same value as
=AVERAGE(IF(OR(x,y), z, "")

Any help is GREATLY appreciated as I am about to lose my mind (keep in mind,
i'm actually working with about 1000 rows on my spreadsheet, so it's not
something I can really do by hand, like in this example of only 7 rows)
  #2  
Old March 9th, 2010, 04:39 PM posted to microsoft.public.excel.worksheet.functions
Bernard Liengme
external usenet poster
 
Posts: 516
Default Help requested for nested conditional formulas referencing other c

You cannot use Boolean functions (AND, OR, NOT) within an array formula
So use =AVERAGE(IF((B2:B80)*( C2:C80), C2:C8, "")) needs to be array
entered
The multiplication is equivalent to Add (addition would emulate OR)

This non-array formula also works
=SUMPRODUCT(--(B2:B80),--(C2:C80),C2:C8)/SUMPRODUCT(--(B2:B80),--(C2:C80))
as does this non-array formula in XL 2007
=AVERAGEIFS(C2:C8,B2:B8,"0",C2:C8,"0")

best wishes
--
Bernard Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme

"Bermie" wrote in message
...
Hello--i can better explain the problem with an example:

24h 1wk change
Person A 1 0 -1
Person B 0 1 1
Person C 0 0 0
Person D 0.25 0.25 0
Person E 0.5
Person F 1 0.5 -0.5
Person G 0 0.75 0.75


What I am trying to do is make three equations:
1 to calculate the average of the values in the 24h column, IF the value
is
NOT equal to zero, which I have accomplished with the array formula:
{=AVERAGE(IF(B2:B80, B2:B8, ""))}

here's where things get difficult--now, I want to find the average of the
values in the 1wk column, only if either the values in the 24h OR 1 wk
column
are not zero, so the value, in this case, would be=0.5 (from averaging
Person
A, B, D, F, and G's 1 wk values). I tried with the following formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), C2:C8, ""))}, but it returns 0.4167
(using the same function, but with countif instead of average, it returns
6
instead of returning 5, so it's adding an extra person's value), so i need
help in retifying this error.

Also, even more difficult:
Finally, i'd like to find the average of the amount of change, ONLY IF
either the 24h or the 1 wk values are not zero, so, in this case, the
value
should equal 0.05 (the average change of person A, B, D, F, and G),
however,
with the formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), D28, ""))}, i get 0.04167 (again, the
count function gives me 6 instead of 5). I also tried it with the
formula:

{=AVERAGE(IF(OR(OFFSET(D28, 0,-2)0, OFFSET(D28, 0, -1)0), D28,
""))}, to the same avail.

Basically, how do i tell it to ONLY COUNT/AVERAGE a value in column D
(change) if either the 24h column (B) or the 1wk column (C) is not zero
(will
never be negative, which is why I don't have 0 at the end. I tried it
with
the not(X=0) function as well, to no avail)?

When I trace the function, all of the true/false variables are
correct--however, I believe it is actually computing an overall true/false
for the entire "if" and then running the function to calculate the average
for every variable in the respective column (e.g., D2:8) instead of
calculating the average for the cell where the two preceding fit my
criteria
(e.g., D2,D3,D5,D7,D8). I basically want it to test the if for two cells
in
a row (B2, C2), and, if true, then include D2 in the calculation for the
average of column D, when there is a value other than zero for the
preceding
columns (which is why I tried the OFFSET function, but I still got the
same
end result).

Also, it does not make a different if I change the order of functions in
terms fo the end results I obtain:
=IF(OR(x,y), AVERAGE(z), "") gives me the same value as
=AVERAGE(IF(OR(x,y), z, "")

Any help is GREATLY appreciated as I am about to lose my mind (keep in
mind,
i'm actually working with about 1000 rows on my spreadsheet, so it's not
something I can really do by hand, like in this example of only 7 rows)


  #3  
Old March 9th, 2010, 05:03 PM posted to microsoft.public.excel.worksheet.functions
Bernard Liengme
external usenet poster
 
Posts: 516
Default Help requested for nested conditional formulas referencing other c

And for part 2, this array formula (watch the parentheses !!)
=SUM(D28)/(SUM(IF((B2:B80)+(C2:C80),1,0))-COUNTIF(C2:C8,""))
best wishes
Bernard
--
Bernard Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme

"Bermie" wrote in message
...
Hello--i can better explain the problem with an example:

24h 1wk change
Person A 1 0 -1
Person B 0 1 1
Person C 0 0 0
Person D 0.25 0.25 0
Person E 0.5
Person F 1 0.5 -0.5
Person G 0 0.75 0.75


What I am trying to do is make three equations:
1 to calculate the average of the values in the 24h column, IF the value
is
NOT equal to zero, which I have accomplished with the array formula:
{=AVERAGE(IF(B2:B80, B2:B8, ""))}

here's where things get difficult--now, I want to find the average of the
values in the 1wk column, only if either the values in the 24h OR 1 wk
column
are not zero, so the value, in this case, would be=0.5 (from averaging
Person
A, B, D, F, and G's 1 wk values). I tried with the following formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), C2:C8, ""))}, but it returns 0.4167
(using the same function, but with countif instead of average, it returns
6
instead of returning 5, so it's adding an extra person's value), so i need
help in retifying this error.

Also, even more difficult:
Finally, i'd like to find the average of the amount of change, ONLY IF
either the 24h or the 1 wk values are not zero, so, in this case, the
value
should equal 0.05 (the average change of person A, B, D, F, and G),
however,
with the formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), D28, ""))}, i get 0.04167 (again, the
count function gives me 6 instead of 5). I also tried it with the
formula:

{=AVERAGE(IF(OR(OFFSET(D28, 0,-2)0, OFFSET(D28, 0, -1)0), D28,
""))}, to the same avail.

Basically, how do i tell it to ONLY COUNT/AVERAGE a value in column D
(change) if either the 24h column (B) or the 1wk column (C) is not zero
(will
never be negative, which is why I don't have 0 at the end. I tried it
with
the not(X=0) function as well, to no avail)?

When I trace the function, all of the true/false variables are
correct--however, I believe it is actually computing an overall true/false
for the entire "if" and then running the function to calculate the average
for every variable in the respective column (e.g., D2:8) instead of
calculating the average for the cell where the two preceding fit my
criteria
(e.g., D2,D3,D5,D7,D8). I basically want it to test the if for two cells
in
a row (B2, C2), and, if true, then include D2 in the calculation for the
average of column D, when there is a value other than zero for the
preceding
columns (which is why I tried the OFFSET function, but I still got the
same
end result).

Also, it does not make a different if I change the order of functions in
terms fo the end results I obtain:
=IF(OR(x,y), AVERAGE(z), "") gives me the same value as
=AVERAGE(IF(OR(x,y), z, "")

Any help is GREATLY appreciated as I am about to lose my mind (keep in
mind,
i'm actually working with about 1000 rows on my spreadsheet, so it's not
something I can really do by hand, like in this example of only 7 rows)


  #4  
Old March 9th, 2010, 08:50 PM posted to microsoft.public.excel.worksheet.functions
Bermie
external usenet poster
 
Posts: 5
Default Help requested for nested conditional formulas referencing oth

Hi Bernard,

thanks for your suggestions. I've halfway reached my goal now--let me
explain:

The =AVERAGE(IF((B2:B80)+( C2:C80), D28, "")) worked for the fourth
(change) column and correctly returned the average and count (when changing
the "average" function to "count"), after I used the + (OR) instead of *
(which served as the AND boolean and only returned values for the two
instances where both 24h and 1 wk are not 0). However, I am still getting a
value of 6 (when I should be getting 5) for the middle column of data
(C2:C8). When I evaluated the formula, it is because it is assigning the
blank cell (C6) a value of 0, so both the count and average functions are
then off (it returns 6 and 0.42 instead of the correct 5 and 0.5)

Although you can't see it, I have the change column (D) calculating as :
=IF(C2="", "", C2-B2) (and so on), so it automatically recognizes it as
blank, which is maybe why the equation works for this column, but not the
previous.
For column C (1wk), I do not have any code inserted (as the values for
column B (24h) and C (1wk) are manually entered as we receive them, or left
blank if unavailable). For some reason, during evaluation, it is
counting/averaging the blank cells as 0 (I though "count" and "average" were
not supposed to do this???)

Is there anyway to fix this?

(From your second response, I can't really use the code "manually" deriving
averages (such as sums/counts), because I also change code as needed for max,
min, percentiles, st dev and st errors). Also, the code I'm using has to
work in both excel 2003 and 2007, as worksheets are shared at work and not
all computers have the same version installed, so i'm reluctant to enter a
2007 code.

Thanks again and in advance for any additional suggestions!




"Bernard Liengme" wrote:

You cannot use Boolean functions (AND, OR, NOT) within an array formula
So use =AVERAGE(IF((B2:B80)*( C2:C80), C2:C8, "")) needs to be array
entered
The multiplication is equivalent to Add (addition would emulate OR)

This non-array formula also works
=SUMPRODUCT(--(B2:B80),--(C2:C80),C2:C8)/SUMPRODUCT(--(B2:B80),--(C2:C80))
as does this non-array formula in XL 2007
=AVERAGEIFS(C2:C8,B2:B8,"0",C2:C8,"0")

best wishes
--
Bernard Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme

"Bermie" wrote in message
...
Hello--i can better explain the problem with an example:

24h 1wk change
Person A 1 0 -1
Person B 0 1 1
Person C 0 0 0
Person D 0.25 0.25 0
Person E 0.5
Person F 1 0.5 -0.5
Person G 0 0.75 0.75


What I am trying to do is make three equations:
1 to calculate the average of the values in the 24h column, IF the value
is
NOT equal to zero, which I have accomplished with the array formula:
{=AVERAGE(IF(B2:B80, B2:B8, ""))}

here's where things get difficult--now, I want to find the average of the
values in the 1wk column, only if either the values in the 24h OR 1 wk
column
are not zero, so the value, in this case, would be=0.5 (from averaging
Person
A, B, D, F, and G's 1 wk values). I tried with the following formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), C2:C8, ""))}, but it returns 0.4167
(using the same function, but with countif instead of average, it returns
6
instead of returning 5, so it's adding an extra person's value), so i need
help in retifying this error.

Also, even more difficult:
Finally, i'd like to find the average of the amount of change, ONLY IF
either the 24h or the 1 wk values are not zero, so, in this case, the
value
should equal 0.05 (the average change of person A, B, D, F, and G),
however,
with the formula:

{=AVERAGE(IF(OR(B2:B80, C2:C80), D28, ""))}, i get 0.04167 (again, the
count function gives me 6 instead of 5). I also tried it with the
formula:

{=AVERAGE(IF(OR(OFFSET(D28, 0,-2)0, OFFSET(D28, 0, -1)0), D28,
""))}, to the same avail.

Basically, how do i tell it to ONLY COUNT/AVERAGE a value in column D
(change) if either the 24h column (B) or the 1wk column (C) is not zero
(will
never be negative, which is why I don't have 0 at the end. I tried it
with
the not(X=0) function as well, to no avail)?

When I trace the function, all of the true/false variables are
correct--however, I believe it is actually computing an overall true/false
for the entire "if" and then running the function to calculate the average
for every variable in the respective column (e.g., D2:8) instead of
calculating the average for the cell where the two preceding fit my
criteria
(e.g., D2,D3,D5,D7,D8). I basically want it to test the if for two cells
in
a row (B2, C2), and, if true, then include D2 in the calculation for the
average of column D, when there is a value other than zero for the
preceding
columns (which is why I tried the OFFSET function, but I still got the
same
end result).

Also, it does not make a different if I change the order of functions in
terms fo the end results I obtain:
=IF(OR(x,y), AVERAGE(z), "") gives me the same value as
=AVERAGE(IF(OR(x,y), z, "")

Any help is GREATLY appreciated as I am about to lose my mind (keep in
mind,
i'm actually working with about 1000 rows on my spreadsheet, so it's not
something I can really do by hand, like in this example of only 7 rows)


.

 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 03:20 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.