How to display a column of sequential number to visible rows only?
Got this question from a friend. Her task is simple as shown below:
I guess many people wanted to achieve the same thing but have no idea at all. Are you one of them?
Actually, the solution is simple, simpler than you may have thought about.
In our example, input the following formula in A2 and then copy down:
=SUBTOTAL(103,$B$2:B2) 'pls pay attention to where the $ are
As simple as that. 🙂
Normally it is easier to explain the logic of the formula from the beginning cell. But for this case, I think the opposite may illustrate better.
Firstly let’s take a look at the syntax of SUBTOTAL
The first argument function_num can be any number from 1 to 11 (includes hidden values) or 101-111 (exclude hidden values) that specifies what function to use in calculating subtotal to the range specified (i.e. ref1 as the second argument).
Then let’s look at our example
function_num 103 is used. That simply asks Excel to do COUNTA (i.e. count the number of cell that is not empty) to the range $B$2:B11 but ignoring hidden rows (either by filter or just by hiding).
Now look at the formula in A11, which is
Pay attention to the reference made to $B$2 (absolute reference) and B11 (relative reference). That’s why you will see the range changes to $B$2:B11 and $B$2:B5 when you are looking into the formula in A11 and A5 respectively. Literally it means a range “from the the row assigned a to the active row”.
The range $B$2:B2 changes dynamically according to the position of the formula. It always refers to the top row (in our case Row 2) of the table to the active row of formula.
To put everything together, the formula does the simple job to count, from the top row to the active row, how many cell(s) is non-blank, ignoring hidden rows. Therefore in A11, it gives you the answer of 5 correctly when you filter for “Wholesales”.
Now let’s look at the changes in formula row by row in the filtered range.
See? This is in effect to show a list of sequential number starting from 1 to the last visible row.
Tip: You may refer to any column with non-blank data, e.g. $C$2:C2 or $D$2:D2 both yield the same result, as long as there is no blank cell in the range.
Note: You may find that Filter refuses to include the last row with the formula start with SUBTOTAL. For workaround, please read next post: Interesting bug – Filter with SUBTOTAL.
Want to know more about SUBTOTAL? Please read
The chance of writing effective formula is higher, when you truly see the difference between relative and absolute references.