I'll have a shot, but it is quite complex, so my explanation may not be up
to it.
Firstly, each item in the row being tested is compared against row 1
COUNTIF(A2:C2,$A$1:$C$1)
This will return an array of values between 0 and the number of columns (3
in this case)
Then, each item of this array is divided into 1. The reason for this is to
force an error when the count from step 1 is 0.
These values are then forced into True/False values with the ISERROR
function, so that the 0 values (which change to #DIV/0 when divided into 1)
transform to True, the other values transform to False.
The NOT just flips True to False and vice versa.
Then the -- kicks in, which coerces the True/False values to 1 and 0.
SUMPRODUCT adds these up.
So as an example, if A1:C1 holds the values 1,2,3 and A2:C2 holds 3,3,2, we
get:
- COUNTIF returns an array of 0,1,2 (1 isn't found, 2 is found once, 3 is
found twice)
- 1/COUNTIF change the array to #DIV/0,1,0.5
- ISERROR(1/COUNTIF becomes True,False,False
- NOT(ISERROR(1/COUNTIF becomes False,True,True
- --NOT(ISERROR(1/COUNTIF becomes 0,1,1
- SUMPRODUCT adds them up to 2
If you want further explanation, the best explanation can be found at
http://www.xldynamic.com/source/xld.SUMPRODUCT.html

Signature
HTH
RP
(remove nothere from the email address if mailing direct)
> > Hi Mike,
> >
[quoted text clipped - 10 lines]
>
> thx