Please Note: This article is written for users of the following Microsoft Excel versions: 2007, 2010, 2013, 2016, 2019, Excel in Microsoft 365, and 2021. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Relative Worksheet References when Copying.

Relative Worksheet References when Copying

Written by Allen Wyatt (last updated November 23, 2024)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, Excel in Microsoft 365, and 2021


1

When you copy a formula from one cell to another, Excel automatically updates any relative references within the formula based on the target that is receiving the formula. For instance, assume that cell B7 contains the following formula:

=B6+A7

If you copy this formula to cell D22, Excel automatically updates the references, so they are relative to cell D22, as shown here:

=D21+C22

When you are copying formulas from one worksheet to another, and the formula contains a reference to a previous worksheet, Excel doesn't do this type of formula updating—at least not on the worksheet names. For instance, let's say you have three worksheets named January, February, and March—in that order. On the February worksheet you have the following formula:

=January!B7*1.075

If you copy this cell to the March worksheet, Excel will automatically change the B7 reference (if necessary), but it won't change the sheet name (January, which was "one less" than the sheet on which the formula first occurred) to the adjusted relative sheet name (February, which is "one less" than the sheet to which the formula is being copied).

If you have only a few worksheet references in your copied formulas, it is fairly easy to just edit the formulas, so they reference the proper worksheet. The task can quickly become a nightmare, however, if you have dozens or hundreds of such references.

The solution is to do a simple search-and-replace operation in Excel, as outlined here:

  1. Copy the formulas from the February worksheet to the desired location on the March worksheet.
  2. With the March worksheet visible, press Ctrl+A. This selects all the cells in the target worksheet.
  3. Press Ctrl+H. Excel displays the Replace tab of the Find and Replace dialog box. (See Figure 1.)
  4. Figure 1. The Replace tab of the Find and Replace dialog box.

  5. In the Find What box, enter "January!" (without the quote marks).
  6. In the Replace With box, enter "February!" (without the quote marks).
  7. Click on Replace All.

The formulas in the worksheet are now updated so they refer to the proper worksheet.

Notice in steps 4 and 5 that what you are searching for and replacing it with is not the straight month names. This is done because the month names alone (January, February, etc.) could easily occur in other places in the worksheet without being part of a formula. You don't want to change these instances, so the extra characters are included to help narrow down the search.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (9869) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, Excel in Microsoft 365, and 2021. You can find a version of this tip for the older menu interface of Excel here: Relative Worksheet References when Copying.

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

Selecting Combo Boxes in Locked Worksheets

Once you protect a worksheet, you may run into problems with any combo boxes that the worksheet contains. This is a ...

Discover More

Understanding AutoComplete

Entering data in a worksheet can be time consuming. One of the tools that Excel provides to make entry easier is ...

Discover More

Finding and Changing Word's Internal Commands

If you know how to create macros, you can easily create entire replacements for Word's internal commands. Here's all you ...

Discover More

Create Custom Apps with VBA! Discover how to extend the capabilities of Office 2013 (Word, Excel, PowerPoint, Outlook, and Access) with VBA programming, using it for writing macros, automating Office applications, and creating custom applications. Check out Mastering VBA for Office 2013 today!

More ExcelTips (ribbon)

Highlighting the Rows of Selected Cells

If you lose your place on the screen quite often, you might find it helpful to have not just a single cell highlighted, ...

Discover More

Recording a Data Entry Time

When entering information in a worksheet, it is common to also note a date or time corresponding to the entry. There are ...

Discover More

Changing Multiple Cells at Once

Excel includes several different methods of editing information in your cells. If you want to edit multiple cells all at ...

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 one more than 4?

2024-11-23 15:54:17

J. Woolley

My Excel Toolbox includes the following function to return a sheet's name using its location:
    =NameOfSheet([Position], [Absolute])
Position is the location of the sheet in the workbook or 0 (default). If Absolute is FALSE (default), Position is relative to the formula's worksheet; therefore, NameOfSheet(-1) refers to the sheet on the left. If Absolute is TRUE, Position is the absolute location of the sheet in the workbook (base-1); therefore, NameOfSheet(3, TRUE) refers to the 3rd sheet. Absolute is ignored if Position is 0 (the formula's worksheet). Chart sheets and worksheets plus hidden and very hidden sheets are included when determining location.
Replacing the Tip's example
    =January!B7*1.075
with this formula
    =INDIRECT(NameOfSheet(-1)&"!B7")*1.075
makes it relative to the previous month's sheet on the left. Notice the 1st formula will adjust if rows or columns are inserted or deleted before B7 on sheet January, but the 2nd formula will not.
My Excel Toolbox also includes the following function to return a range on any worksheet in the workbook:
    =RangeOnSheet(Target, [Position], [Absolute])
Position and Absolute are described above. The result is the range specified by Target on the Sheet determined by Position and Absolute (Sheet!Target). Sheet must be a worksheet; otherwise, Sheet!Target will be invalid. If Target refers to a single cell, the value of that cell is returned; otherwise, the result is an array of values.
Replacing the Tip's example
    =January!B7*1.075
with this formula
    =RangeOnSheet(B7, -1)*1.075
makes it relative to the previous month's sheet on the left. As before, the 2nd formula will not adjust if rows or columns are inserted or deleted before B7 on sheet January. But in this case, the 2nd formula will correct itself if equivalent changes are made to its sheet. On the other hand, the following formula will automatically adjust to changes made on sheet January (only):
    =RangeOnSheet(January!B7, -1)*1.075
Target must refer to a cell range. Only the range applies; Target's worksheet is ignored.
The following function in My Excel Toolbox returns the address of Range as text:
    =RangeAddress(Range, [RowAbsolute], [ColumnAbsolute],
        [ReferenceStyle], [External], [RelativeTo])
This function's five optional arguments are defined in Excel VBA's description of its Range.Address property. By replacing Range with RangeOnSheet(...), the latter's result can be verified. For example, consider these formulas in sheet February of Book1.xlsx:
    =RangeAddress(RangeOnSheet(B7, -1))
    =RangeAddress(RangeOnSheet(January!B7, -1))
Each formula returns '[Book1.xlsx]January'!$B$7. But if a row is added above row 7 in sheet February, the 1st formula returns '[Book1.xlsx]January'!$B$8. And if a row is added above row 7 in sheet January, the 2nd formula returns '[Book1.xlsx]January'!$B$8.
NameOfSheet is Volatile, so it will update if a sheet's name is changed. RangeOnSheet and RangeAddress are not Volatile, but any function will update if its parameter is changed.
See https://sites.google.com/view/MyExcelToolbox/


This Site

Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu 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.