Temp variables within formulas?

A

Andy Smith

Here's a common example: you want a formula with a VLOOKUP which either looks
up the number you want, or returns zero if it's not in the table -- this is
so that calculations based on that formula use zero and calculate something
meaningful rather than result in #N/A!. So you have to do this:

IF(ISNA(VLOOKUP(...)),0,VLOOKUP(...))

Of course that "..." can be pretty long and hairy. And it's inefficient
too, because that long VLOOKUP has to be calculated twice. Isn't there any
way of writing a formula so it calculates the VLOOKUP once, stored the
result, and uses just the result in the rest of the formula? That is:

R=VLOOKUP(...);IF(ISNA(R),0,R)

I realize you can insert columns just to hold temporary results, and then
hide them, but when you copy them and paste them outside Excel, you get the
hidden columns too, and I don't want them.

Thanks!
 
D

Dave Peterson

MS had the same thoughts of you and introduced the =iferror() function in
xl2007.
 
R

RagDyeR

There have been discussions (prior to XL07) in these groups about the
efficiency of various other functions over the double use of Vlookup as an
error trap.

Match() and Countif() being just a couple.

=If(ISNA(Match(D1,A1:A100,0)),0,Vlookup(D1,A1:C100,3,0))

=If(Countif(A1:A100,D1),Vlookup(D1,A1:C100,3,0),0)

And, if you're copying the Vlookup formula across many columns in order to
return numerous fields of a datalist,
you could use a single cell to calculate the existence of a match, and
simply refer to that cell before performing the Vlookup.

In E1:
=COUNTIF(A1:A100,D1)

Then:
=If($E$1>0,Vlookup(D1,$A$1:$C$100,3,0),0)


--

Regards,

RD
-----------------------------------------------------------------------------------------------
Please keep all correspondence within the Group, so all may benefit !
-----------------------------------------------------------------------------------------------


Here's a common example: you want a formula with a VLOOKUP which either
looks
up the number you want, or returns zero if it's not in the table -- this is
so that calculations based on that formula use zero and calculate something
meaningful rather than result in #N/A!. So you have to do this:

IF(ISNA(VLOOKUP(...)),0,VLOOKUP(...))

Of course that "..." can be pretty long and hairy. And it's inefficient
too, because that long VLOOKUP has to be calculated twice. Isn't there any
way of writing a formula so it calculates the VLOOKUP once, stored the
result, and uses just the result in the rest of the formula? That is:

R=VLOOKUP(...);IF(ISNA(R),0,R)

I realize you can insert columns just to hold temporary results, and then
hide them, but when you copy them and paste them outside Excel, you get the
hidden columns too, and I don't want them.

Thanks!
 

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

Similar Threads

Temp variables in formulas? 3
Temp vaiables in formulas? 2
Average formula multiple worksheets 1
IF ERROR FORMULA 2
Excel Vlookup Help 0
Need a help display 0 value 2
formula question 2
IF isna to avoid #N/A 5

Top