What SEQUENCE Generates
SEQUENCE builds a block of sequential numbers. You control the row count, column count, starting value, and step size. The result is a live array, so changing any input reshapes the whole block. That beats filling handles because there is no static trail of numbers to maintain or accidentally overwrite.

The Syntax in Plain Terms
SEQUENCE takes rows, columns, start, and step. Rows and columns default to 1, start defaults to 1, and step defaults to 1. If you only need a single column, set columns to 1 or leave it out. The step can be negative to count backward, which is handy for a countdown or a reverse date list.
Type =SEQUENCE(10, 1, 1, 1) and press Enter. Excel spills the numbers 1 through 10 down the column. The first 10 is the row count, the second 1 is the column count.
Use =SEQUENCE(1, 10, 1, 1) to spill 1 through 10 across a row instead of down. Swap the row and column arguments whenever you need a horizontal header.
Set the third argument, like =SEQUENCE(5, 1, 100, 1), to list 100, 101, 102, 103, 104. The start value can be any number, including a negative one for special indexes.
Use =SEQUENCE(5, 1, 0, 5) to get 0, 5, 10, 15, 20. The fourth argument is the increment. A step of 2 gives odd or even lists, and a negative step counts down.
Build Date Ranges With SEQUENCE
Dates are just numbers in Excel, so SEQUENCE can generate them by stepping 1 day at a time from a start date. Wrap the result in the DATE function for clean inputs, then format the cells as dates. I build month and quarter headers this way for every recurring report.
Write =SEQUENCE(30, 1, DATE(2026,1,1), 1) and format the cells as dates. You get Jan 1 through Jan 30, 2026, with no manual fill. Change 30 to extend the range instantly.
Use =SEQUENCE(12, 1, DATE(2026,1,1), 7) for 12 weekly dates a week apart. This is a quick way to label a Monday-only report header without thinking about month lengths.
To stop at a fixed end date, compute the count: =SEQUENCE(EndDate-StartDate+1, 1, StartDate, 1). Put the dates in cells and the series always runs exactly to the end without guessing the row count.
I recommend wrapping a date SEQUENCE in the DATE function rather than typing a raw serial number like 46052, because the formula stays readable six months later. A common mistake is writing =SEQUENCE(30,1,46052,1) and then nobody on the team can tell which month it starts in. DATE(2026,1,1) makes the intent obvious and avoids off-by-one errors.
Generate Test IDs and Sample Rows
SEQUENCE is my go-to for sample data. A column of IDs plus a few RANDARRAY columns gives you a fake Orders table to test FILTER, SORT, and UNIQUE against, with no copy-paste from production. Keep the volumes small so the sheet stays fast.
Write ="ORD-"&SEQUENCE(50, 1, 1001, 1) to create order IDs ORD-1001 through ORD-1050. Concatenating text with SEQUENCE gives labeled keys you can use as a primary key in tests.
In the next column use =RANDARRAY(50, 1, 50, 5000, FALSE) for whole-dollar amounts between $50 and $5,000. Pair it with the ID column to mock an Orders table for practice.
Use =CHOOSE(RANDBETWEEN(1,3,SEQUENCE(50)),"West","East","North") to assign a region per row. Now you have a realistic three-column sample to run the other dynamic array functions on.
Generate Weekday and Month Labels
SEQUENCE builds the numbers, but wrapping it in TEXT turns those numbers into readable labels. I use this to print Monday-through-Friday headers or a month name per row without typing a calendar by hand. The labels stay live, so extending the series extends the labels.
Write =TEXT(SEQUENCE(5,1,DATE(2026,1,5),1), "ddd") to spill Mon, Tue, Wed, Thu, Fri starting from Jan 5, 2026, which is a Monday. The ddd format gives the short weekday name for each date in the series.
Use =TEXT(SEQUENCE(12,1,DATE(2026,1,1),31), "mmm") for a Jan-through-Dec list. The step of 31 lands on the first of each month, and mmm shows the month label. A real date under the hood keeps sorting correct.
Wrap with "mmm d, yyyy" like =TEXT(SEQUENCE(30,1,DATE(2026,1,1),1), "mmm d, yyyy") for Jan 1, 2026 style headers. The underlying value stays a date, so charts treat it as time, not text.
Build a 2D Number Grid
Setting both rows and columns turns SEQUENCE into a matrix. This is useful for multiplication tables, coordinate labels, or any layout that needs a numbered grid. The step applies within each row before moving to the next.
Write =SEQUENCE(5, 5, 1, 1) for a 5-row, 5-column block numbered 1 to 25. Each row continues the count from the previous one. Use it as a quick index map.
Use =SEQUENCE(3, 4, 10, 10) to get 10, 20, 30, 40 across the top row and continuing down. The step of 10 applies left to right, then the next row picks up where the last ended.
Combine with TEXT to label cells, like ="R"&SEQUENCE(3,1)&"C" for row tags. SEQUENCE inside text gives you structured labels for a small grid without manual typing.
Chain SEQUENCE With INDEX and TEXT
SEQUENCE becomes powerful when it drives another function. Feed its numbers into INDEX to pull every Nth row, or into TEXT to format a date series. The array stays live, so the downstream result reshapes with it.
Write =INDEX(Sales[Amount], SEQUENCE(10,1,1,2)) to return every second amount from the Orders table. SEQUENCE supplies the row positions 1, 3, 5 and so on, and INDEX fetches them.
Wrap with TEXT: =TEXT(SEQUENCE(30,1,DATE(2026,1,1),1), "mmm d") for clean Jan 1 style labels. The numbers stay real dates underneath while the display is short.
Use =INDEX(data, SEQUENCE(ROWS(data),1,ROWS(data),-1)) to flip a column bottom to top. SEQUENCE counts down from the last row, and INDEX returns rows in that reversed order.
A common mistake is setting rows from a count that includes a header, so the series starts one row too low and misaligns with the data. If your data is A2:A101, the count is 100, not 101. This will break an INDEX lookup that expects row 1 to mean the first data row. Always subtract the header when converting a range to a count.
Why SEQUENCE Throws #SPILL! and #NAME?
SEQUENCE fails for the same two reasons as the other dynamic array functions: a blocked spill area, or an Excel version too old to have it. The fixes are identical and quick.
If you see #SPILL!, clear the cells below or to the right of the formula. SEQUENCE needs a rectangle sized rows by columns, so any blocker stops the spill.
SEQUENCE requires Excel 365 or Excel 2021. On Excel 2019 or earlier you get #NAME?. Upgrade, or build the series with a fill handle for a static list.
Rows and columns must be positive whole numbers. A zero or negative value returns #VALUE!. If the count comes from a formula, wrap it with MAX(1, ...) so it never drops below 1.
SEQUENCE vs Dragging the Fill Handle
The fill handle writes static numbers you must redo when the range changes. SEQUENCE writes one formula that reshapes itself. For a one-time list the handle is fine, but for any series tied to a variable count or a date that moves, SEQUENCE saves real time.
When you practice, build a sample Orders table with SEQUENCE and RANDARRAY, then run FILTER and SORT on it. That loop is how the dynamic array functions start to feel natural.
I recommend pairing a SEQUENCE date column with a header in row 1, so the spill sits under a clear Report Date Column instead of a blank cell. A common mistake is building the series in A2 while your lookup table starts at A1, so =FILTER(Sales[Amount],Sales[Date]=A2) returns nothing for the first row. I always subtract the header offset when the count comes from a formula, and I check the spill covers every row before I send the report.
Next Steps and a Quick Checklist
Build a number column, then a date column, then a sample ID list. Chain SEQUENCE into INDEX and TEXT to see it drive other functions. Keep the row count tied to a cell so the series grows when you need more rows.
Functions to learn next are RANDARRAY for sample values, UNIQUE to dedupe the series, and FILTER to pick rows from a SEQUENCE-built table. Together they cover most generated-data needs without manual entry.


