ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Using INDIRECT & R1C1 Ref style (https://www.excelbanter.com/excel-worksheet-functions/209159-using-indirect-r1c1-ref-style.html)

Bassman62

Using INDIRECT & R1C1 Ref style
 
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.


T. Valko

Using INDIRECT & R1C1 Ref style
 
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.




Bassman62

Using INDIRECT & R1C1 Ref style
 
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.





T. Valko

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.







Bassman62

Using INDIRECT & R1C1 Ref style
 
Thanks T.
I read an explanation at
http://www.xldynamic.com/source/xld....T.html#explain
but was still perplexed.
Your explanation was far superior.


"T. Valko" wrote:

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.








T. Valko

Using INDIRECT & R1C1 Ref style
 
You're welcome. Thanks for the feedback!

--
Biff
Microsoft Excel MVP


"Bassman62" wrote in message
...
Thanks T.
I read an explanation at
http://www.xldynamic.com/source/xld....T.html#explain
but was still perplexed.
Your explanation was far superior.


"T. Valko" wrote:

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.











All times are GMT +1. The time now is 05:33 AM.

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