Please Note: This article is written for users of the following Microsoft Excel versions: 97, 2000, 2002, and 2003. If you are using a later version (Excel 2007 or later), this tip may not work for you. For a version of this tip written specifically for later versions of Excel, click here: Filling References to Another Workbook.

Filling References to Another Workbook

Written by Allen Wyatt (last updated October 8, 2020)
This tip applies to Excel 97, 2000, 2002, and 2003


6

When you use Excel's Paste tool to create a reference to a cell in another Excel workbook (not another worksheet in the same workbook), Excel creates the reference in this manner:

='[Sales Master.xls]Sheet1'!$A$5

The presence of the dollar signs means that this is an absolute reference to the cell. Because of this, you cannot use any of Excel's automatic fill options, such as Fill Right (Ctrl+R) or Fill Down (Ctrl+D) or AutoFill, and get the results you expect. Instead, every cell in the filled cells will reference the exact same cell in the external workbook.

The solution to the problem is to make a quick modification to the referencing formula before you do the fill. If you remove the dollar signs (both of them), then the formula is now relative, and filling will work the way you expect.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (2437) applies to Microsoft Excel 97, 2000, 2002, and 2003. You can find a version of this tip for the ribbon interface of Excel (Excel 2007 and later) here: Filling References to Another Workbook.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Swapping Two Numbers

When programming macros, variables are used extensively. At some point you might want to exchange the values held by two ...

Discover More

Pictures inside Shapes

Filling one of Excel's drawing shapes with a picture of your choosing is a neat trick. Here's how to do it.

Discover More

Copying Worksheets in a Macro

Copying worksheets (one or many) is easy to do manually. What is not well known is that it is even easy to make the ...

Discover More

Dive Deep into Macros! Make Excel do things you thought were impossible, discover techniques you won't find anywhere else, and create powerful automated reports. Bill Jelen and Tracy Syrstad help you instantly visualize information to make it actionable. You’ll find step-by-step instructions, real-world case studies, and 50 workbooks packed with examples and solutions. Check out Microsoft Excel 2019 VBA and Macros today!

More ExcelTips (menu)

Non-adjusting References in Formulas

Sometimes making sure that a reference in a formula doesn't get changed is not as simple as putting dollar signs in front ...

Discover More

Using Named Formulas Across Workbooks

You can use the naming capabilities of Excel to name both ranges and formulas. Accessing that named information in a ...

Discover More

Finding Differences Between Lists

A common task faced by Excel users is to determine whether items in one list are also found in a different list. There ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is 5 - 4?

2024-03-07 16:03:21

Alexis

Thank you so much. After looking in MANY different places this was the EXACT answer I needed. thank you!!!!!!!!!!!


2020-04-27 12:05:35

zaki

It works perfectly for me!!!!

Thank you!!!


2019-01-31 01:25:50

Peeyush K

Great thanks. I was looking for this solution since some time. Thanks for putting it! :-)


2017-01-04 08:54:25

Alan Elston

Hi Ed,
I do not know if it is possible to use a formula which could be dragged across to give the results that you want.
A single line VBA code can be used as below ( I also give a more explicit Code version to aid in understanding the code )
The code will put a Formula in cell A1 and B1 like this:
= '[MyOtherOpenFile.xlsx]Sheet1'!$A$5 and ='[MyOtherOpenFile.xlsx]Sheet2'!$A$5

Alan


Sub FormulaAcrossWorksheetSHimpfGlified() ' Simplified
Range("A1:B1").Value = Evaluate("""='[MyOtherOpenFile.xlsx]Sheet""" & "&" & "Column(" & Range("A1:B1").Address & ")" & "&" & """'!$A$5""")
End Sub


Sub FormulaAcrossWorksheet() ' http://excel.tips.net/T002437_Filling_References_to_Another_Workbook.html Ed: 03 Jan 2017, 07:25
' Change Workbook and Worksheet names in formula and change Range to suit yours
' Final Formula string required is like ='[" & ActiveWorkbook.Name & "]Sheet1'!$A$5
' Formula strings as written manually in cell are like ='[concatanating.xlsm]Sheet1'!$A$5 ='[MyOtherOpenFile.xlsx]Sheet1'!$A$5
' Formula string for VBA string build is like "='[" & ActiveWorkbook.Name & "]Sheet1'!$A$5"
' Evalute(" ") to return a string will need an extra enclosing " in final String which requires a double "" in a VBA string.
' As Evaluate takes a string argument, we may build that string in VBA using text strings concatenated VBA Functions and Spreadsheet Functions
'Worksheets info
Dim Ws As Worksheet
Set Ws = ActiveSheet
Dim rngAB As Range ' Range object to be filed with all formulas
Set rngAB = Ws.Range("A1:B1")
'Put formula into first cell of Range Object
Let rngAB.Item(1, 1).Value = "='[" & ActiveWorkbook.Name & "]Sheet1'!$A$5"
' use Evaluate to put formulas into first cell of Range Object
Dim strEval As String: Let strEval = """='[" & ActiveWorkbook.Name & "]Sheet1'!$A$5"""
Let rngAB.Item(1, 1).Value = Evaluate(strEval)
' use Evaluate to fill in Worksheet Name dynamically
Let strEval = """='[" & ActiveWorkbook.Name & "]Sheet""" & "&" & """1""" & "&" & """'!$A$5"""
Let strEval = """='[" & ActiveWorkbook.Name & "]Sheet""" & "&" & 1 & "&" & """'!$A$5"""
Let strEval = """='[" & ActiveWorkbook.Name & "]Sheet""" & "&" & "Column(A1)" & "&" & """'!$A$5"""
Let strEval = """='[" & ActiveWorkbook.Name & "]Sheet""" & "&" & "Column(" & rngAB.Item(1, 1).Address & ")" & "&" & """'!$A$5"""
Let rngAB.Item(1, 1).Value = Evaluate(strEval)
' extending to more than one cell
Let strEval = """='[" & ActiveWorkbook.Name & "]Sheet""" & "&" & "Column(" & rngAB.Address & ")" & "&" & """'!$A$5"""
Let strEval = """='[MyOtherOpenFile.xlsx]Sheet""" & "&" & "Column(" & rngAB.Address & ")" & "&" & """'!$A$5"""
Dim arr() As Variant 'Evaluate involving Fuctions returning Arrays of values returns a field (Array) of Member Elements of variant Type
Let arr() = Evaluate(strEval)
Let rngAB.Value = arr() '.Value refers to (for a Range object of more than one contigous cells) an Array Property to which an Array ov values may be assigned directly
End Sub
' http://www.eileenslounge.com/viewtopic.php?f=27&t=25298
' Code _8) http://www.eileenslounge.com/viewtopic.php?f=27&t=25068


2017-01-03 07:25:18

Ed

Is there some way I can get it to increment the sheet numbers - so that an adjacent cell would have an external reference to cell A5 on Sheet2 ?


2016-04-09 02:06:23

KEN

Woah! thanks for this, i've been loking for this solution since 3 days and cannot find any same like this online. you make my job a lot more easier. Cool!


This Site

Got a version of Excel that uses the menu interface (Excel 97, Excel 2000, Excel 2002, or Excel 2003)? This site is for you! If you use a later version of Excel, visit our ExcelTips site focusing on the ribbon interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.