In modern Excel, the calculation engine was completely overhauled to support Dynamic Arrays. Instead of pressing 'Ctrl + Shift + Enter' for legacy CSE array formulas, modern formulas naturally evaluate lists of data and automatically "Spill" across multiple adjacent rows and columns.
1. The Dynamic Array Spill Engine & #SPILL! Error
When a function produces multiple results, it fills adjacent empty cells automatically. The surrounding border is highlighted with a blue bounding box known as the Spill Range.
The Spill Operator ('#'): To reference the entire dynamic spill generated by cell D2, simply write '=D2#'. If the spilled data expands from 10 rows to 50 rows, '=D2#' automatically expands with it!
The #SPILL! Error: Occurs when an existing value, comment, merged cell, or table boundary blocks the path where the formula needs to spill. Clear the blocking cells, and the formula spills immediately.
Click to Zoom
Dynamic Arrays and Formulas
2. The Core Modern Dynamic Functions
A. UNIQUE: Instant Deduplication
Extracts all distinct values from a column or table:
1=UNIQUE(A2:A500)
Takes a list with 500 rows and spills only the unique customer names or cities!
Optional 2nd arg: TRUE to compare columns; FALSE to compare rows.
Optional 3rd arg: TRUE to return items that occur strictly once.
B. SORT & SORTBY: Formula-Driven Ordering
Sorts a range dynamically without using the Data tab:
1=SORT(array, [sort_index], [sort_order])
2
3Example: Sort employees by Salary (Col 3) Descending (-1)
4=SORT(A2:C100, 3, -1)
C. FILTER: The Query Engine
Extracts records that satisfy one or more criteria:
1Syntax:
2=FILTER(array, include, [if_empty])
3
4Example: Extract all employees in the "Finance" department
5=FILTER(A2:D100, B2:B100="Finance", "No Records")
Combining AND / OR Criteria in FILTER:
*AND Logic (Multiply ''):** Finance team with Salary > 50,000: