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

Changing Page Orientation

Page orientation controls the way in which information is printed on the page. Here's how you can control the page ...

Discover More

Deleting Every X Rows without a Macro

Grab some info from a source other than Excel, and you may find the need to delete a certain pattern of rows from a ...

Discover More

ExcelTips: Filters and Filtering (Table of Contents)

Excel provides two ways to filter your data so that only what you want to see is displayed. Discover how filtering works ...

Discover More

Excel Smarts for Beginners! Featuring the friendly and trusted For Dummies style, this popular guide shows beginners how to get up and running with Excel while also helping more experienced users get comfortable with the newest features. Check out Excel 2013 For Dummies today!

More ExcelTips (ribbon)

Defaulting Input to Negative Values

When entering many negative values in a worksheet, you could save time if you didn't need to enter the minus sign for ...

Discover More

Copying Rows between Worksheets Based on a Text Value

Want to move data from one worksheet to another based on a text value in a column. There are a couple of ways you can ...

Discover More

Colors No Longer Work

It can be disconcerting if you are editing a workbook and can no longer change colors for cells in the workbook. This tip ...

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 7 + 3?

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.