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 18, 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

How Excel Stores Dates and Times

Excel stores dates and times internally using what is called a serial number. This tip explains how that serial number is ...

Discover More

Disabling Printing

Don't want your worksheets to be printed out? You can make it a bit harder to get a printout by applying the techniques ...

Discover More

Printing AutoCorrect Entries

If you want to print a list of all the AutoCorrect entries in your document, Word doesn't provide a method. You can use ...

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)

Copying Subtotals

If you have added subtotals to your worksheet data, you might want to copy those subtotals somewhere else. This is easy ...

Discover More

When Clicking a Cell, Excel Jumps to a Different Cell

When you click on a cell, you expect the cell to be selected. What happens, though, if you are instead taken to an ...

Discover More

Changing References in a Lot of Defined Names

Need to change some cell references in your defined names? Changing one or two is easy; changing dozens is a good deal ...

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

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.