Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / May 2008

Tip: Looking for answers? Try searching our database.

CHOOSE and External References

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
ScottS - 29 May 2008 16:28 GMT
Hello all,

My client makes extensive use of long CHOOSE formulas that references cells
in another large workbook.  They are constantly using these CHOOSE formulas
for buliding "reports" in dozens of workbooks.  I am concerned that any
changes to the structure of the large source workbook would require a
mega-editing effort.

e.g.:  CHOOSE($B$1,'[Data File.xls]Actual'!F23,'[Data
File.xls]Actual'!G23,'[Data File.xls]Actual'!H23,'[Data
File.xls]Actual'!I23,'[Data File.xls]Actual'!J23,'[Data
File.xls]Actual'!K23,'[Data File.xls]Actual'!L23,'[Data
File.xls]Actual'!M23,'[Data File.xls]Actual'!N23,'[Data
File.xls]Actual'!O23,'[Data File.xls]Actual'!P23,'[Data File.xls]Actual'!Q23)

I am recommending setting up the CHOOSE functionality using VBA functions
they can use where ever they need.  This way a structural change could be
taken care of in one place.

Would it be best to use the CHOOSE in my function or is there a better way?  
Is there a special syntax for referencing another workbook from within a VBA
function?
(I'm coming from Access here and am just getting up to speed on VBA in Excel).

Thanks!

Scott

Signature

Scott S

Bernie Deitrick - 29 May 2008 18:04 GMT
Scott,

Their formula

=CHOOSE($B$1,'[Data File.xls]Actual'!F23,'[Data
File.xls]Actual'!G23,'[Data File.xls]Actual'!H23,'[Data
File.xls]Actual'!I23,'[Data File.xls]Actual'!J23,'[Data
File.xls]Actual'!K23,'[Data File.xls]Actual'!L23,'[Data
File.xls]Actual'!M23,'[Data File.xls]Actual'!N23,'[Data
File.xls]Actual'!O23,'[Data File.xls]Actual'!P23,'[Data File.xls]Actual'!Q23)

would better be

=INDEX('[Data File.xls]Actual'!$F$23:$Q$23,1,$B$1)

But note that the range to select (the F23:Q23) could also be made dynamic.  Suppose you had a table
on the Actual sheet with column headings in row 1 and row labels in column A.  Then you could use a
formula like

=INDEX('[Data File.xls]Actual'!$1:$65536,MATCH("Label for Row 23",'[Data
File.xls]Actual'!$A:$A,FALSE),MATCH("Col Heading",'[Data File.xls]Actual'!$1:$1,FALSE))

This would extract specific data by labels rather than being tied to an exact row or column,
allowing for the insertion and deletion of rows and columns of data (as long as column A and Row 1
stayed put).  The "Label for Row 23" and "Col Heading" could also be cell references.

That would make it much more robust.

HTH,
Bernie
MS Excel MVP

> Hello all,
>
[quoted text clipped - 23 lines]
>
> Scott
ScottS - 29 May 2008 19:19 GMT
Thanks much Bernie - this helps a lot.
Signature

Scott S

> Scott,
>
[quoted text clipped - 55 lines]
> >
> > Scott
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.