TL;DR —
SEQUENCEbuilds an array of numbers from nothing and spills it into a range. Syntax:=SEQUENCE(rows, [cols], [start], [step]).=SEQUENCE(5)spills1,2,3,4,5down;=SEQUENCE(1,12)spills1…12across; the third and fourth arguments set the starting value and the increment. It isn't a fancier fill handle — it's the engine that feeds row IDs, date series and grids to other formulas, and it stays live as your data grows. A blocked range throws#SPILL!. Excel 365 and 2021+.
=SEQUENCE(5) ' 1,2,3,4,5 down a column
=SEQUENCE(ROWS(Data), 1, 1, 1) ' a row number for every data row, live
The fill handle has been Excel's way to make 1, 2, 3, … for thirty years, but
it writes static values — change the data and the numbers are wrong. SEQUENCE
makes the same series as a formula, so it resizes itself, and because it
returns an array it can feed any other dynamic-array formula. That second use is
where it earns its place.
What you'll learn
- The argument order —
rows, cols, start, step— and why it trips people - How to generate a live date series (a calendar, a schedule, due dates)
- Using
SEQUENCEfor row numbers that grow and shrink with the data - Why it throws
#SPILL!and how to clear it - When
SEQUENCEreplaces the fill handle andROW()
The mental model: an engine, not a fill handle
Reach for the fill handle and you're typing values once; reach for SEQUENCE and
you're describing a series that recomputes forever. But the real shift is this:
SEQUENCE returns an array, so it's rarely the final answer — it's the part
that generates the right-sized grid for something else to consume. Think of it
as the engine under INDEX, date math, or a spilled calculation:
' Static, breaks when rows are added: drag 1,2,3 down by hand
' Live, resizes with the table:
=SEQUENCE(ROWS(Sales)) ' 1..N where N = however many rows Sales has
The rule that unlocks everything: rows, cols, start, step
Every surprise with SEQUENCE comes from the argument order. It is
SEQUENCE(rows, [cols], [start], [step]) — rows first, not the starting
value. People expect SEQUENCE(start, step) and get a tall column they didn't
ask for:
=SEQUENCE(5) ' 5 rows: 1,2,3,4,5
=SEQUENCE(5, 1, 10, 5) ' 5 rows from 10 step 5: 10,15,20,25,30
=SEQUENCE(1, 12) ' 1 row, 12 cols: 1..12 across
=SEQUENCE(3, 4) ' a 3x4 grid, filled 1..12 row by row
Once the order is muscle memory, two-dimensional grids fall out for free — a
multiplication table is =SEQUENCE(9) * SEQUENCE(1,9), no dragging.
Generate a live date series
This is the single most useful thing SEQUENCE does. Dates are just numbers in
Excel, so a date series is a SEQUENCE with a step of 1 day, started on a date:
=SEQUENCE(31, 1, DATE(2026,1,1), 1) ' every day in January 2026 (format as date)
=SEQUENCE(12, 1, DATE(2026,1,1), 0) ' wrong — step 0 repeats the same day
=EDATE(DATE(2026,1,1), SEQUENCE(12,1,0)) ' the 1st of each month, calendar-correct
One catch: SEQUENCE returns the underlying serial numbers, so format the spill
range as dates or you'll see 46023, 46024, …. For month-ends or "first of each
month," wrap SEQUENCE in EDATE rather than stepping by ~30, which drifts.
#SPILL! is about the room, not the formula
SEQUENCE knows exactly how big its output is, so if anything sits in the cells
it needs, Excel can't lay the array down and returns #SPILL!. The formula is
fine; the destination is blocked. Click the cell to see the highlighted range,
clear it, and the numbers appear. Because SEQUENCE sizes itself from arguments
like ROWS(Data), give it room to grow downward.
The judgment call: when SEQUENCE replaces dragging and ROW()
If you're dragging a fill handle to make 1, 2, 3, …, that's a static value that
goes stale — SEQUENCE(ROWS(Data)) stays correct as rows come and go. If you're
typing ROW()-ROW($A$1)+1 to fake a row counter, SEQUENCE says the same thing
without the volatile ROW() and without breaking when you insert a row above. The
honest limit: for a one-off list of fixed numbers you'll never change, the fill
handle is faster to type. For anything that should track the data, SEQUENCE
wins — and it's the natural partner of VSTACK and
TAKE when you're building arrays.
How ExcelMaster helps
Most SEQUENCE work hides inside a bigger ask: number these rows so the IDs
renumber when I add data, or lay out a 2026 delivery calendar, one row per
week. ExcelMaster writes the SEQUENCE — correct argument order, date
wrapping with EDATE, sized from your table — from a plain-English description,
and puts it where it has room to spill. You describe the series; it handles the
generator.
Frequently asked questions
How do I generate a series of numbers in Excel?
Use =SEQUENCE(10) for 1..10 down a column, or =SEQUENCE(10, 1, 5, 5) to
start at 5 and step by 5. The result spills automatically and resizes if you
change the count.
How do I make a list of dates with SEQUENCE?
Start on a date and step by 1 day: =SEQUENCE(31, 1, DATE(2026,1,1), 1), then
format the spill range as dates. For the first of each month, wrap it in EDATE:
=EDATE(DATE(2026,1,1), SEQUENCE(12,1,0)).
What's the argument order for SEQUENCE?
SEQUENCE(rows, [cols], [start], [step]) — rows first, then columns, then the
starting value, then the increment. Expecting start first is the most common
mistake.
Why does SEQUENCE return #SPILL!?
Something is blocking the cells it needs to fill — a value, a label, or a merged cell. Click the formula cell to see the spill range, clear whatever sits in it, and the result appears.
Does SEQUENCE work in Excel 2016 or 2019?
No. SEQUENCE requires Excel 365 or Excel 2021+. On older versions you use the
fill handle or a ROW()-based formula.
Tested in
Tested in: Excel 365 (Windows 11) — last verified 2026-06-17.
Related guides: Excel VSTACK & HSTACK · Excel TAKE & DROP · Excel FILTER · Excel SORT
