Excel like a finance pro.
Lookup function
OFFSET
Returns a range shifted from a starting cell by a number of rows and columns.
When to use it
Returns a range shifted from a starting cell by rows and columns, optionally resized. Dynamic ranges, rolling windows, and "last N rows" all use it. It is volatile, so it recalculates constantly.
The shape of it
- Syntax
=OFFSET(reference, rows, cols, [height], [width])
Worked examples
Shift a reference
=OFFSET(A1,2,1) → 25
Two rows down and one column right of A1 is B3.
Resize a range
=SUM(OFFSET(B2,0,0,3,1)) → 50
A 3-row, 1-column block starting at B2: 10 + 25 + 15.
Last three rows
=SUM(OFFSET(B1,COUNTA(B:B)-3,0,3,1)) → 110
The last three prices: 15 + 40 + 55.
Worth knowing
- Volatile and hard to audit. INDEX can usually do the same job.
- Rolling 12-month total: =SUM(OFFSET(B1,COUNTA(B:B)-12,0,12,1)).
- INDEX-based ranges (=B2:INDEX(B:B,COUNTA(B:B))) do the same without volatility.
- Height and width can be negative to extend upward or leftward.
Where it goes wrong
- #REF! when the offset points outside the sheet.
- Volatile: large models with many OFFSETs recalculate slowly.
- The result is a reference, so it shows #VALUE! when a single cell expects a multi-cell range.
Related
Learn the moves here — or let Wauvel run them on your numbers.
Meet your AI CFO →One CFO-grade Excel tip a week
A short, practical email for finance operators — functions, shortcuts, and the moves that save an afternoon. Free, unsubscribe anytime.