Arte SheetsLearn. Try. Understand.

Text

Generate hierarchical WBS outline numbering (1, 1.1, 1.2, 1.2.1, 2) by level

Build a three-level outline code from explicit depth values and running counters. Refill the formulas when extending or restructuring the list.

Stop hand-typing 1.2.1 outline numbers that break on every inserted task!

This example supports exactly three levels. Start with level 1, use integer depths 1–3, and increase depth by no more than one level at a time so a child always has a parent.

B counts level-1 headings. C counts level-2 headings and resets when a new level-1 heading begins. D counts level-3 headings and resets at a shallower level.

Initialize row 2 as shown, then fill the relative formulas in B3:E3 down the remaining list. Editing a valid depth recalculates downstream counters.

Inserting, moving or deleting tasks is a separate spreadsheet operation. Refill and inspect the formula chain afterward; indentation formatting does not itself change the numeric depth. These display codes are not permanent identifiers.

Row Depth Level (A)L1 Counter (B)L2 Counter (C)L3 Counter (D)Assembled WBS Code (E)
1 (Discovery)100"1"
2 (Interviews)110"1.1"
2 (Wireframes)120"1.2"
3 (Mobile Flow)121"1.2.1"
1 (Build Phase)2 (L1+1)0 (Reset!)0 (Reset!)"2"

Assemble multi-level WBS strings cleanly without trailing ".0"

Appends "." & C_row only when Depth >= 2, and "." & D_row only when Depth >= 3.

=B5 & IF(A5 >= 2, "." & C5, "") & IF(A5 >= 3, "." & D5, "")

Inspect the full auto-numbered WBS sequence across the schedule

The formulas update from the explicit depths in A2:A6. Keep all counter formulas present and the hierarchy valid.

=TEXTJOIN(", ", TRUE, E2:E6)

Fill the level-2 counter

Enter in C3 and fill down. It resets at a new top-level heading and otherwise carries or increments the previous count.

=IF(A3=1, 0, IF(A3=2, C2+1, C2))

Try the example

Use the original values or change them to test your understanding.

Further reading