Formula Errors

How to Keep Excel INDIRECT References Correct When Columns Move

Khadija KhanKhadija Khan Oct 21, 2026 869 views

Question details

The user needs a method to maintain accurate data retrieval using the Excel INDIRECT formula, ensuring the formula updates correctly even when columns are inserted, deleted, or rearranged.

How to Keep Excel INDIRECT References Correct When Columns Move
Product
Excel
Device & OS
not provided
Scenario
Working with dynamic datasets where column structures frequently change, requiring formulas to adapt automatically.
Observed behavior
An INDIRECT formula that uses a hardcoded fixed column letter returns incorrect data after the original columns are rearranged or shifted.
Before you start

Ensure your dataset contains unique column headers in a consistent row, as this dynamic method relies on exact header names to locate the correct target column.

Solution 1Recommended

Combine MATCH and ADDRESS Functions with INDIRECT

Use the MATCH function to find the target column by its header dynamically, then use ADDRESS to generate the proper cell reference for the INDIRECT function.

By default, the INDIRECT function evaluates text strings as static cell references. If you hardcode a column letter (like "H"), Excel will not update that letter if you insert a new column. To fix this, you can look up the column header dynamically.

1
Identify your target row and header

Determine the exact text of the column header you want to reference (e.g., "H") and the row number where this header is located (e.g., Row 1).

2
Build the MATCH function

Use the MATCH function to find the column index. For example, type MATCH("H", 'Sheet'!1:1, 0) to locate the exact position of the header "H" in the first row of 'Sheet'.

3
Convert to a cell address

Wrap the MATCH function inside an ADDRESS function to generate the cell reference. If you want to pull data from row 97, write ADDRESS(97, MATCH("H", 'Sheet'!1:1, 0)).

4
Apply the INDIRECT function

Enclose the entire string within the INDIRECT function, ensuring you include the sheet name. The final formula should look like: =INDIRECT("'Sheet'!"&ADDRESS(97,MATCH("H",'Sheet'!1:1,0))).

Combine MATCH and ADDRESS Functions with INDIRECT
Formula Customization: Be sure to replace 'Sheet' with your actual worksheet name, '97' with your target row number, and "H" with the exact text of your column header.
Advanced Formulas

Handle Dynamic Spreadsheets Effortlessly with WPS Spreadsheet

WPS Office provides a highly compatible spreadsheet application that seamlessly handles advanced dynamic array formulas, including INDIRECT, MATCH, and ADDRESS, ensuring your data never breaks when updating table layouts.

  1. 1. Open your workbook in WPS Spreadsheet: Launch WPS Office and open the file where your columns frequently change.
  2. 2. Select the target cell: Click on the specific cell where you want your dynamic data to appear.
  3. 3. Input the dynamic formula: Enter the formula combining INDIRECT, ADDRESS, and MATCH, then press Enter. Your data will now automatically adapt if you insert or move columns.
100% compatible with Microsoft Excel formulas and .xlsx files.Lightweight architecture ensures fast calculation even with complex formulas.Familiar user interface requires no learning curve.Completely free to download and use for your daily tasks.
microsoft office alternative - wps office

Frequently Asked Questions

Why does my INDIRECT formula break when columns move?

The INDIRECT function evaluates raw text strings to form references. Because text strings like "H1" are static and not interpreted as actual cell links by Excel until the formula runs, Excel will not automatically adjust the text string when columns are inserted or deleted.

Can I use INDEX and MATCH instead of INDIRECT for moving columns?

Yes. Using the INDEX and MATCH combination is highly recommended. Unlike INDIRECT, INDEX uses standard cell referencing, which Excel automatically updates when columns are rearranged, entirely avoiding the need to parse text strings.

Will using INDIRECT slow down my workbook?

INDIRECT is considered a 'volatile' function, meaning it recalculates every time any change happens anywhere in the workbook. Using it extensively across thousands of rows can significantly slow down your spreadsheet's performance.