Function Problems

Fix Excel Dynamic Arrays Not Working Across Closed Workbooks

Emma BrownEmma Brown Nov 10, 2026 868 views

Question details

Users experience broken links or #REF! errors when referencing dynamic arrays or spilled ranges from a closed external workbook.

How to Fix Excel Dynamic Arrays Not Working Across Closed Workbooks
Product
Microsoft Excel
Device & OS
not provided
Scenario
Pulling data from an external workbook using spilled-array references (e.g., =A2#) or dynamic named ranges.
Observed behavior
Standard functions like XLOOKUP or INDEX work fine, but dynamic array references fail to update or return errors when the source file is closed.
Before you start

Ensure you have access to both the source and destination workbooks. It is highly recommended to open the source workbook temporarily to verify that your formulas evaluate correctly before applying structural workarounds.

Solution 1Recommended

Replace Spilled Arrays with Fixed Ranges or Tables

Since direct references to spilled arrays require the source file to be open, using traditional ranges or formatted tables ensures data links remain stable when closed.

Excel's external link architecture supports standard ranges but struggles to calculate the dimensions of dynamic arrays without opening the calculation engine of the source file.

1
Open the Source File

Open the external source workbook containing the dynamic array that you are trying to reference.

2
Define a Fixed Range or Table

Convert the data area into an official Excel Table by selecting the data range and pressing Ctrl + T on your keyboard, or manually note the exact fixed boundaries (e.g., $A$2:$D$100).

3
Update Destination Formulas

In your destination workbook, update your lookup formulas (like XLOOKUP or INDEX) to reference the new fixed range or Table name instead of the spilled array reference. For example, replace '[Source.xlsx]Sheet1!$A$2#' with '[Source.xlsx]Sheet1!$A$2:$A$100'.

Replace Spilled Arrays with Fixed Ranges or Tables
Best Practice: Using formatted Excel Tables is generally the best approach. Tables automatically expand to include new data, mimicking dynamic array behavior while remaining fully compatible with closed external workbooks.
Free Microsoft Office alternative

Experience Seamless Formula Handling with WPS Office

If you frequently encounter frustrating limitations with cross-workbook references and complex formula calculations, consider switching to WPS Office. It provides a lightweight, highly compatible spreadsheet environment that handles data lookups with ease.

Fully compatible with Microsoft Excel formats (.xlsx, .xls, .csv).Robust support for standard lookup functions like XLOOKUP, VLOOKUP, and INDEX across documents.Lightweight installation and lightning-fast performance even with large datasets.Free to use with a familiar, easy-to-navigate tabbed interface.
QA img-9

Frequently Asked Questions

Why does XLOOKUP work with a closed workbook but =A2# does not?

Standard lookup functions like XLOOKUP and INDEX pointing to fixed ranges are natively supported by Excel's external link architecture. However, spilled array references (indicated by the # symbol) require the calculation engine to actively evaluate the array's size, which it cannot process if the source file is closed.

Will dynamic named ranges update if the source workbook is closed?

No. Named ranges defined by functions like OFFSET, INDIRECT, or dynamic arrays cannot calculate their fluctuating boundaries without the source workbook being actively open in memory, resulting in #REF! or #VALUE! errors.

Is there a way to force spilled arrays to update without opening the source file?

Direct spilled array references strictly require the source file to be open. To retrieve this data without opening the file, you must use alternative methods like Power Query to pull the data, VBA scripts, or switch to using standard formatted Excel Tables.

Does replacing the # reference with an absolute range fix the issue?

Yes. By removing the # modifier and specifying the exact absolute range (for example, changing $A$2# to $A$2:$A$500), the spreadsheet treats it as a standard external link, which functions correctly even when the source file is closed.