How Excel's formula language got to where it is
A short history of the spreadsheet — from VisiCalc's 1979 debut to the dynamic-array revolution of 2020. Knowing the timeline helps you understand why some formulas feel ancient and others feel modern.
VisiCalc — the original spreadsheet
Dan Bricklin and Bob Frankston launch VisiCalc on the Apple II. The first formula language: cell references like A1 and basic arithmetic. No = sign yet — it came later.
Excel 1.0 (Mac) — Microsoft enters
The first Excel ships on Macintosh. Already includes SUM, IF, VLOOKUP. The function naming conventions established here outlive the company that invented spreadsheets — Lotus 1-2-3.
Excel 5.0 — VBA and PivotTables
Visual Basic for Applications becomes the macro language. PivotTables ship for the first time. VLOOKUP, HLOOKUP, INDEX, MATCH become the lookup workhorses for the next 25 years.
Excel 2007 — the ribbon, and IFERROR
The .xlsx format replaces .xls. Row limit jumps from 65,536 to 1,048,576. IFERROR, SUMIFS, COUNTIFS, AVERAGEIFS arrive — finally a clean way to handle multi-condition aggregation.
Excel 2010 — Power Query, Power Pivot
The .EQ family (RANK.EQ, PERCENTILE.INC) appears alongside the legacy versions. Power Query (M language) and Power Pivot (DAX) ship as add-ins.
Excel 2013 — IFNA and Flash Fill
IFNA arrives — a more surgical IFERROR that catches only #N/A. Flash Fill watches your typing and suggests pattern-based completions, often replacing complex text formulas.
Excel 2019 — IFS, SWITCH, TEXTJOIN, CONCAT
The end of nested IF as a daily pattern. TEXTJOIN finally accepts a range and skips blanks — a feature CONCATENATE never had.
Microsoft 365 — dynamic arrays land
The biggest formula change in 25 years. FILTER, SORT, UNIQUE, SEQUENCE, RANDARRAY, XLOOKUP, XMATCH all spill results into adjacent cells. No more dragging formulas down 10,000 rows.
LAMBDA — write your own functions
LAMBDA, LET, and the helper functions MAP, REDUCE, SCAN, BYROW, BYCOL turn the formula language into something close to a real programming language. SCAN(0, B2:B100, LAMBDA(a,b,a+b)) replaces dragged running totals.
Python in Excel
The =PY() function lets you write Python directly in cells, with pandas and matplotlib integrations. Formulas and Python coexist in the same workbook — a different kind of revolution.
TEXTSPLIT, TEXTBEFORE, TEXTAFTER
Modern text functions ship to Microsoft 365. Splitting "Last, First" used to be three nested calls; now it's =TEXTSPLIT(A2, ", ").
Where formulas are heading
The trajectory is clear: less dragging, more spilling. Less nesting, more naming. Less per-cell, more per-array. If you're starting fresh in 2026, learn dynamic-array thinking from day one — it will pay off for the next decade.