View Single Post
  #9   Report Post  
Posted to microsoft.public.excel.worksheet.functions
T. Valko T. Valko is offline
external usenet poster
 
Posts: 15,768
Default counting x instances of a string across columns...

"Ron Rosenfeld" wrote in message
...
On Wed, 18 Jul 2007 17:00:30 -0000, wrote:



A B C D
Yes No Yes Yes
No No No Yes
No Yes Yes No
Yes Yes No No


What I'm trying to do is count the cases where there is one "Yes" (or
maybe 2 or 3 yeses) in any of the columns, with one formula for the
entire array. So to count rows with one yes, there would be 1. With 3
yeses, there would be 1 row. With 2 yeses, there would be 2 rows.

Can't figure out how to do this without using a helper column, any
help is appreciated..



Given your data

Put the number of yes's per row in H1:Hn

Then **array-enter** this formula:

=SUM(--(MMULT(--($A$1:$D$4="Yes"),{1;1;1;1})=H1))

Copy/drag down.

To **array-enter**, hold down <ctrl<shift while hitting <enter. Excel
will
place braces {...} around the formula.

The array constant should have the same number of "1's" as there are
columns.
--ron


And, if you had 25 (or more) columns in your range you wouldn't necessarily
want to use:

{1;1;1;1;1;1;1;1;1;1;1;1;..............1}

You can generate that vertical array by adding this expression to the
formula:

TRANSPOSE(COLUMN(A1:D4)^0)

Note that TRANSPOSE is an array function and requires array entry. So in
using this you may as well use the SUM version rather than the SUMPRODUCT
version since *both* require array entry.

=SUM(--(MMULT(--(A1:D4="yes"),TRANSPOSE(COLUMN(A1:D4)^0))=n))

--
Biff
Microsoft Excel MVP