logo
search
Function Problems

How to Fix Excel Online INDIRECT Array Formulas Not Working

Maira MehtabMaira Mehtab Oct 7, 2026 871 views

Question details

Users need to resolve calculation failures and incorrect results when using the INDIRECT function with dynamic ranges or arrays in Excel for the Web.

How to Fix Excel Online INDIRECT Array Formulas Not Working
Product
Excel Online
Device & OS
not provided
Scenario
Attempting to calculate complex array formulas or dynamic ranges using the volatile INDIRECT function in a web-based spreadsheet.
Observed behavior
The formulas return incorrect results (e.g., yielding 0 instead of 1) or fail completely. Additionally, the workbook's performance drops due to excessive volatile calculations.
Before you start

Before making structural changes to your formulas, duplicate your workbook to create a safe test copy and verify that your browser cache is not causing syncing delays.

Solution 1Recommended

Use the Spill-Range Operator Instead of INDIRECT

Replacing the volatile INDIRECT function with the spill-range operator (#) provides a much more stable and efficient way to reference dynamic arrays in Excel Online.

The INDIRECT function is volatile, meaning it recalculates every time a change is made anywhere in the workbook. In web environments like Excel Online, this can lead to calculation timeouts or errors. Using the spill-range operator (#) explicitly targets the entire dynamic array without the heavy performance cost.

1
Identify the source array

Locate the primary cell where your dynamic array begins to spill (for example, cell AG2).

2
Apply the spill operator

In your dependent formula, reference the starting cell and immediately follow it with the '#' symbol (e.g., AG2#).

3
Rewrite the conditional formula

Replace the problematic INDIRECT logic. For example, change your formula to =IF(AG2#="B",1,0) and press Enter to apply.

Use the Spill-Range Operator Instead of INDIRECT
Performance Improvement: Removing INDIRECT functions greatly reduces browser memory usage and dramatically speeds up worksheet recalculation times.
Free Microsoft Office alternative

Use WPS Office for Reliable Array Formula Calculations

When web-based spreadsheets like Excel Online struggle with complex, volatile functions and array processing, consider switching to WPS Office. It offers a powerful desktop calculation engine that handles heavy dynamic ranges with ease, without the performance bottlenecks of browser-based apps.

  1. 1. Download WPS Office: Visit the official WPS website, download the free suite, and install it on your computer.
  2. 2. Open Your Spreadsheet: Launch WPS Spreadsheet and open your existing .xlsx file containing the array formulas.
  3. 3. Calculate Seamlessly: Enjoy fast, uninterrupted calculations for all your INDIRECT and dynamic array formulas natively.
Fully compatible with Microsoft Excel (.xlsx) formulas and file structuresRobust desktop calculation engine handles complex array formulas without web lagFree, lightweight, and fast alternative to Microsoft OfficeFamiliar user interface ensures a zero-learning-curve migration
QA img-9

Frequently Asked Questions

Why does the INDIRECT function cause performance issues in Excel Online?

INDIRECT is known as a volatile function. This means it forces Excel to completely recalculate the formula every single time any cell in the workbook is modified. In a browser-based environment like Excel Online, calculating thousands of volatile functions simultaneously can cause severe lag, freezing, or incorrect outputs.

What is a spilled array in Excel?

A spilled array occurs when a single formula produces multiple values as its result, and those values automatically 'spill' into neighboring blank cells. You can easily reference this entire range of results dynamically by adding the '#' operator to the cell address where the formula was typed (e.g., A1#).

Can I completely avoid using the INDIRECT function?

In many cases, yes. You can often replace INDIRECT with non-volatile functions like INDEX, OFFSET (which is also volatile but sometimes handles better), or CHOOSE. For dynamic arrays specifically, referencing the spill range directly using the '#' operator is the best modern alternative.