View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.worksheet.functions
T. Valko T. Valko is offline
external usenet poster
 
Posts: 15,768
Default Using INDIRECT & R1C1 Ref style

MOD(COLUMN(INDIRECT("RC1:RC[-1]",0)),2)=0

That expression will return an array of either TRUE or FALSE.

The double unary coerces those into numeric values 1 and 0. TRUE = 1, FALSE
= 0.

--(MOD(COLUMN(INDIRECT("RC1:RC[-1]",0)),2)=0)

If the range was A1:D1...

5...7...3...5

Then:

MOD(COLUMN(A1:D1),2)=0 evaluates to:

{F,T,F,T}

The double unary coerces these to numerics:

{0,1,0,1}

Then the 2 arrays are multiplied together:

{0,1,0,1} * {5,7,3,5}

0*5=0
1*7=7
0*3=0
1*5=5

Then SUMPRODUCT sums up the result:

SUMPRODUCT({0,7,0,5})

=12

See this for more info on SUMPRODUCT:

http://xldynamic.com/source/xld.SUMPRODUCT.html


--
Biff
Microsoft Excel MVP


"Bassman62" wrote in message
...
Thank you.
This works great.
Can you tell me how the double dash operates?

Dave

"T. Valko" wrote:

Try it like this:

=SUMPRODUCT(--(MOD(COLUMN(INDIRECT("RC1:RC[-1]",0)),2)=0),INDIRECT("RC1:RC[-1]",0))

--
Biff
Microsoft Excel MVP


"Bassman62" wrote in message
...
Using Excel 2007;
The following formula sums every other column in a range.
=SUMPRODUCT((MOD(COLUMN(A1:J1),2)=0*A1:J1)
How can I modify the formula to refer to a range
from column A to 'one column left of the formula'?
I've tried the following but the result is #REF!
=SUMPRODUCT((MOD(INDIRECT("RC1:RC"&COLUMN()-1),2)=0)*INDIRECT("RC1:RC"&COLUMN()-1))
A named range works well but I'll copy this formula to hundreds of
lines
in
multiple sheets and I'd rather not have to modify the range name for
each
sheet.
Thank you.