Stop Dragging Fill Handles — The Only Excel Trick You Need for Adding Sequence

Why does your sequence reset to 1 every time you insert a row? Why does =ROW()-1 break when you sort? Why does dragging the fill handle skip numbers after row 1048576? Because you’re using methods that look right—but aren’t built for how Excel actually calculates.

The Myth

Most people believe adding a sequence in Excel means either dragging the fill handle down or typing 1, 2, 3 and double-clicking the corner. They think it’s just about copying numbers—and that if it looks sequential on screen, it’s working.

It’s not. Dragging creates static values—not formulas. Sorting breaks them. Inserting rows shatters them. And yes, even =ROW() fails if your data starts in row 27 and you later paste over row 1.

The Reality

The only reliable way to add sequence in Excel is with a dynamic, position-agnostic formula that recalculates *every time*, regardless of sorting, filtering, or insertion. Not ROW(), not SEQUENCE() alone—and definitely not drag-and-drop.

SymptomCauseFix
Sequence restarts at 1 after inserting a rowStatic numbers (no formula)Replace with =SEQUENCE(ROWS(A2:A11)) in A2, then spill
Numbers shift incorrectly when sortingUsing =ROW()-1 without anchoring startUse =SEQUENCE(ROWS(A2:A11),,1,1) anchored to data range
#SPILL! error appears mid-columnAdjacent cells contain data blocking dynamic arrayClear cells B2:B11 or use =INDEX(SEQUENCE(100),ROW()-1) for legacy compatibility
Sequence skips after filteringFormula references full column (e.g., A:A) instead of filtered rangeUse =SUBTOTAL(103,A$2:A2) inside a helper column

Why the Myth Persists

YouTube tutorials from 2012 still rank high. Microsoft’s own Help article says “drag the fill handle” as step one—without warning that it’s a dead end for anything beyond a throwaway list. And Excel’s UI rewards speed over sustainability: double-clicking feels instant, so we assume it’s correct.

Even seasoned analysts fall for it. I once rebuilt a dashboard because someone had dragged sequences across 12 worksheets—and then inserted 3 rows in the middle of Q3. All downstream reports broke. Trust me, I learned this the hard way.

The Right Way

Here’s what works—tested across Excel 365, Excel 2019, and Excel Online:

  1. Type =SEQUENCE(10) in cell A2. That gives you 1–10, spilling down automatically.
  2. But better: anchor it to your actual data. If names are in B2:B11 (10 rows), type =SEQUENCE(ROWS(B2:B11)) in A2.
  3. Press Ctrl+Enter—not Enter alone—to keep focus in A2 and avoid accidental navigation.
  4. To restart numbering per group (e.g., per department), use =IF(B2<>B1,A1+1,1) in A2 and drag—but only if you can’t use dynamic arrays.

Wait—here’s the counterintuitive part: Don’t use =ROW()-1 unless your list literally starts in row 2 and will never move. Even then, if you copy-paste that formula into another sheet, it breaks. SEQUENCE() doesn’t care where it lives. ROW() does.

Sample dataset (A1:C11):

SeqNameAmount
1Sarah Chen$45,200
2Diego Mendoza$38,950
3Priya Patel$52,100
4Marcus Lee$41,320
5Anya Dubois$49,780
6Rajiv Singh$36,440
7Lena Kim$55,600
8Tariq Hassan$44,890
9Nina Torres$47,210
10Eduardo Vega$39,550

In A2, we used =SEQUENCE(ROWS(B2:B11)). Try inserting a row between Priya and Marcus—watch A5:A11 auto-update. No drag. No panic.

Proof It Works

Before (manual drag): 10 static numbers. After inserting row 5 → sequence breaks. After sorting by Amount → numbers stay fixed while names move.

ActionManual Drag ResultSEQUENCE() Result
Insert row at position 4A4 stays '4'; A5–A11 unchanged → gap at A5A4 becomes '4', A5 becomes '5', all auto-adjust
Sort descending by Amount'1' stays with Sarah, even though she’s now row 10'1' moves with highest amount ($55,600 → Lena Kim)
Filter for Amount > $45,000All numbers remain visible, including '3' next to Priya (now hidden)Only visible rows show 1–5; no gaps, no ghosts
Copy entire block to new sheetNumbers copy as values—no formula logic retainedFormula copies intact; recalculates based on new range size

Exceptions

Yes—there are two cases where dragging *is* acceptable:

  • You’re building a one-time printout (e.g., invoice line numbers) and will never sort, filter, or edit again.
  • You’re on Excel 2010 or earlier—no SEQUENCE(), no dynamic arrays. Then use =ROW()-ROW($A$1) anchored to a fixed header row, and accept the fragility.

That’s it. Two narrow windows where the myth holds up. Everything else? Use SEQUENCE(). Or SUBTOTAL() for filtered lists. Or INDEX()+ROW() if you need backward compatibility and can’t upgrade.

Your next step: Open your most fragile spreadsheet right now. Find the first sequence column. Replace its contents with =SEQUENCE(ROWS(B2:B100)) (adjust B2:B100 to match your data). Press Alt+A, S, R to refresh any pivot tables relying on it. Done.

Anna Kim

Anna Kim

Anna specializes in tax forms