INDIRECT function inside AND function

G

Guest

I have the following formula as a conditional formatting test:

=AND($E13="Y",INDIRECT("G13")="",$M13="")

The INDIRECT function is testing to see if the cell in column G of the same
row is blank. I need to use INDIRECT instead of a direct reference because
the data in column G can get cut/pasted, and I need to hold the reference
stable. But I need to copy this conditional format down 1500 rows, so I
tried to change to INDIRECT("G"&ROW()). But it doesn't quite work, because
the INDIRECT function tests out as "Volatile" instead of "TRUE"?? Anyone?
 
B

Biff

Try using Offset.

I don't know what cell you're wanting to format but offset that cell by 0
rows and the number of columns from column G.

For example, if the cell being formatted was A13:

=AND($E13="Y",OFFSET($A13,,6)="",$M13="")

Biff
 
G

Guest

Hey, that worked great, thanks.

So what was the flaw in my INDIRECT("G"&ROW()) approach? I tested the
function outside of the condition format and it worked fine.
 
B

Biff

Not sure I understand *why* this is happening but I know *what* is
happening.

The formula is being processed as an array (even though it is not an array
formula, that's just how the refedits work) and it evaluates to a #VALUE!
error:

=AND($E13="Y",INDIRECT("G"&ROW())="",$M13="")

Broken down in steps:

INDIRECT("G"&ROW())=""
INDIRECT("G"&{13})=""
INDIRECT({"G13})=""
{#VALUE!}=""
#VALUE!

Try it on the worksheet as an array and you'll see what I mean.

Biff
 
G

Guest

Thanks for the explanation. Thanks to you and others I have some
unbelievable formulas in my spreadsheets (see below), and I generally have
enough sense of how they work to adjust them or combine them with other
formulas, but I don't often know exactly why they work. I probably need to
take some kind of advanced excel class . . .

Here's one of the crazier ones:
=IF(ROWS(B23:B$23)<=COUNTIF('All
Data'!$G$4:$L$1504,$B$27),CONCATENATE(INDEX('All
Data'!$C$4:$C$1504,SMALL(IF('All Data'!$G$4:$L$1504=$B$27,ROW('All
Data'!$G$4:$L$1504)-ROW('All Data'!$H$4)+1),ROWS(B23:B$23)))," (",INDEX('All
Data'!$G$3:$L$3,SUMPRODUCT((INDIRECT("'All Data'!F"&SMALL(IF('All
Data'!$G$4:$L$1504=$B$27,ROW('All Data'!$G$4:$L$1504)-ROW('All
Data'!$H$4)+1),ROWS(B23:B$23))+3&":K"&SMALL(IF('All
Data'!$G$4:$L$1504=$B$27,ROW('All Data'!$G$4:$L$1504)-ROW('All
Data'!$H$4)+1),ROWS(B23:B$23))+3)=$B$27)*COLUMN('All
Data'!$G$4:$L$1504))-7),")"),"")
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top