Excel Dynamic Formula/Reference Workbook - excel

I'm trying to create a dynamic reference within a formula; meaning the referenced workbook and subsequent sheet name can be changed and the appropriate data loaded.
I'm aware that a static formula reference could be done as follows:
=SUM('C:\Reports\[SOTDJ17.xlsx]Summary'!C10:C25)
but I want to be able to change the workbook name, and it will reference information from that particular workbook and change the data. The workbook name
is stored in B5 and the sheet is stored in B8. I thought I might be able to use
something simple like:
=SUM('C:\Reports\[B5]B8'!C10:C25)
but it doesn't seem to work. Is there a syntax error or something else I am missing?
(I should note that I am trying to reference a closed workbook)

You'll want to use Indirect():
=SUM(INDIRECT("["&B5&"]"&B8&"!$C$10:$C$25"))
Note that the workbook you're referring to must be open.

Related

How to dynamically reference to another cell in other workbooks?

i'm trying to create an excel workbook that will automatically collect data from other workbooks in the directory i come up with a code but it does not work correctly
="'"&LEFT(CELL("filename",$A$1),FIND("~",SUBSTITUTE(CELL("filename",$A$1),"[","~",1))-1)&"["&RIGHT(LEFT(CELL("filename",$A$1),FIND("~",SUBSTITUTE(CELL("filename",$A$1),"[","~",1))-2),3)&RIGHT(LEFT(CELL("filename",$A$1),FIND("~",SUBSTITUTE(CELL("filename",$A$1),"[","~",1))+16),1)&".xlsx]Final Data'!"&E3
if i use this code it will call the value of the E3 in the current workbook if i use ADDRESS(3,5) it will give me the right address but the moment i put =INDIRECT() before it, the value of E3(in the current workbook) will come up (the other file is open since i'm using indirect). how can i correct this and is there a way to get ell values while the file is closed ?

How to reference a cell as table range when using vlookup

I have vlookups to pull specific data from a workbook and paste into a new workbook in the desired layout. The layout of the first workbook never changes however the name will change when i want to run this on a different file.
My current formula is =VLOOKUP(A3,[Workbook1.xlsx]Sheet1!$B$3:$XFD$7,2,FALSE)
I would really like it to reference A1 instead of Workbook1 so I could then just update the file name in A1 every time I want to analyse a different file. I should mention the Sheet name won't ever change.
I know you have to use INDIRECT but im unsure how it works. I did try =VLOOKUP(A3,INDIRECT(A1),$B$3:$XFD$7,2,FALSE) but then i'd too many arguments and when i removed the $B$3:$XFD$7 i lost the range i was searching in.
Thanks!
With INDIRECT you must create the whole string that denotes the range reference:
=VLOOKUP(A3,INDIRECT("'[" & A1 & "]Sheet1'!$B$3:$XFD$7"),2,FALSE)
One more note, that INDIRECT requires that the workbook be open to function, or will return an error.

Reference a file that changes daily / Excel

Before I jump into a VBA solution, I wanted to know if it was possible to update a filename of a closed workbook I am referencing.
The formula reads,
=SUMIF('L:path\[filename - "&TEXT(WORKDAY(TODAY(),-1),"yyyymmdd")&".xlsx]Sheet'!$BF:$BF,"criteria",'L:path\[filename - "&TEXT(WORKDAY(TODAY(),-1),"yyyymmdd")&".xlsx]Sheet'!$DX:$DX)
To clarify, the path the filename would look something like this, This is the filename - yyyymmdd.xlsb
Someone at work said it's not possible to change the filename because it's a string. If that is the case could someone just expand on that a bit?
You can't really. If you have "Book1.xls" and "Book2.xls", what you can do it put this formula in book1:
=MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND("]", CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)
This will return the name (only) of Book1. You could then reference that cell from Book2. HOwever, if you change Book1's name to something else, the reference will be broken and you will have to manually change the reference (pick the file from the update link manager). It seems excel uses absolute paths, including filename, to reference other workbook. You would need to have a way to store a flexible reference to that workbook into Book2. But the only way to do is VBA.
Interestingly however you can do that:
Create a reference in book2 pointing to a cell in book1. You get the value of that cell in book2.
Close everything.
Open only book1, edit the referenced cell. Close & save book1.
Book2, when you open it, will ask you if you want to update the link, and you can see the updated value even if book1 is still closed.
The other idea that I had was to use INDIRECT, like what is done there: using indirect function in Excel
But it won't work for closed workbook and that's one of your requirements.
So VBA it is.

Vlookup/Match - Reference external workbook array in a cell

This probably isn’t possible but is there a way of referencing a cell that contains a workbook , name , location , tab and range when using Vlookup and Match formulas ?
I have a lot of references to other workbooks but I want to keep track of all the workbooks via one location
Im using the Northwind table as an example
https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCEQFjAAahUKEwilut7YxuXHAhUta9sKHWr-CV4&url=http%3A%2F%2Fwww.exceldashboard.org%2FNorthwind.xls&usg=AFQjCNGnhABr44N7nhF6oa5qtH9U930p0w&bvm=bv.102022582,d.d24
This should be possible using INDIRECT function. Here you can find how to use it to reference other workbook
http://www.contextures.com/xlFunctions05.html
unfortunately the function does not work if the source workbook is closed, but you can use Morefunc addin to use INDIRECT.EXT function which can reference closed workbook. Some info about it here:
http://www.ashishmathur.com/tag/indirect-ext/
http://download.cnet.com/Morefunc/3000-2077_4-10423159.html

Dynamically reference cell in different workbook

I have two workbooks:
WorkbookToUpdate.xls
Workbook_for_20130901.xls
In the first workbook I have the following:
A1 ='[Workbook_for_20130901]Sheet1'!$C5
Now a month goes by and I want to update the first work to reference Workbook_for_20131001.xls without going cell by cell and changing the name of the workbook. My thought was to make the date portion of the workbook name a variable and simply change that variable, but that doesn't seem to be working.
EDIT: I don't want to use Excel's INDIRECT function because I don't want to open the reference workbook.
I found one solution to be Harlan Grove’s PULL function (code can be found here), which works similarly to the INDIRECT function except that it doesn't require the source workbook to be open. The other solution, which actually works out to be faster than the Pull function (its only downfall) is the one I was using originally - Good ol' "find & replace". I thought that that was slow, but after trying the Pull function, it's not too bad.
Another option is by changing the source through excel's Data links, but this doesn't allow you to choose which cells keep the old source and which cells use the new one (in my case, I need the old values as well).

Resources