How to get relative row numbers in a range in Excel
To get a full set of relative row numbers in a range, you can use an array formula based on the ROW function. See example below;
Formula
{=ROW(range)-ROW(range.firstcell)+1}
Note: this is an array formula that must be entered with Control + Shift + Enter. If you’re entering this on the worksheet (and not inside another formula), make a selection that includes more than one row, enter the formula, and confirm with Control + Shift + Enter.
Explanation
In the example shown, the formula in B5:B11 is:
{=ROW(B5:B11)-ROW(B5)+1}
This is formula will continue to generate relative numbers even when the range is moved. However, it’s not a good choice if rows need to be sorted, deleted, or added, because the array formula will prevent changes.
How this formula works
The first ROW function generates an array of 7 numbers like this:
{5;6;7;8;9;10;11}
The second ROW function generates an array with just one item like this:
{5}
which is then subtracted from the first array to yield:
{0;1;2;3;4;5;6}
Finally, 1 is added to get:
{1;2;3;4;5;6;7}
Generic version with named range
With a named range, you can create a more generic version of the formula using the MIN function or the INDEX function. For example, with the named range “list”, you can use MIN like this:
{ROW(list)-MIN(ROW(list))+1}
With INDEX, we fetch the first reference in the named range, and using ROW on that:
{=ROW(list)-ROW(INDEX(list,1,1))+1}
You’ll often see “relative row” formulas like this inside complex array formulas that need row numbers to calculate a result.