04 · Working with Tables¶
A plain range of cells with headers looks like a table, but Excel's
Table feature (Insert > Table) turns it into an actual structured
object: automatic filtering, banded rows, formulas that auto-fill down new
rows, and structured references — formulas that read
=SUM(Budget[Actual]) instead of =SUM(C2:C6). This module converts the
budget range into a real Table.
1. Creating a Table¶
- Open
budget-tracker.xlsx. Click any cell inside the data range (A1:D6, including theDifferencecolumn from Module 2). - Insert > Table (or Ctrl/⌘+T). Excel guesses the range
(
A1:D6) and shows a dialog with My table has headers checked — confirm it's checked, since row 1 holds labels, not data, then click OK. - The range now displays with a default banded-row style (alternating shading), a filter-arrow dropdown on each header cell, and a new Table Design tab in the ribbon.
- Rename the Table from the default
Table1toBudget: click any cell inside it, then Table Design > Table Name (top-left of that tab) and typeBudget, Enter. This name is what structured references use. - Table names must be unique per workbook, contain no spaces, and can't
collide with cell addresses —
Budgetis valid,A1would not be.
2. Structured references¶
- Click an empty cell below the Table, e.g.
B8, and type=SUM(Budget[Budgeted]). Press Enter — it returns2150, identical to=SUM(B2:B6)from Module 2, but readable without knowing which raw columns hold what. - In
C8, type=SUM(Budget[Actual])— returns2260. Budget[Budgeted]refers to the entireBudgetedcolumn's data cells (not the header), automatically — if rows are added or removed from the Table, this reference adjusts on its own, unlike a fixed range likeB2:B6which would need manual editing.Budget[#Headers]refers to just the header row;Budget[#All]refers to headers plus data;Budget[@Actual](used inside a formula that lives in the same Table row) refers to the Actual value in that specific row — the structured-reference equivalent of a relative reference likeC2.
3. Auto-fill and auto-expand¶
- Click into the empty cell directly below the last Table row (row 7,
column A) and type a new category, e.g.
Subscriptions. Press Enter — Excel automatically extends the Table to include this new row, complete with the banded formatting and filter behavior. - Type
20in the new row's Budgeted cell and25in Actual. Because theDifferencecolumn already holds a formula (=C2-B2pattern) in every existing row, Excel automatically fills that same formula into the new row too — this "calculated column" behavior only applies inside a real Table, not a plain range. - The new row's Difference should read
5— confirm it, and confirm=SUM(Budget[Actual])inC8(or wherever your totals sit) has updated to2285to include the new row, without editing the SUM formula itself.
4. Sorting and filtering¶
- Click the filter-arrow on the
Actualheader. Choose Sort Largest to Smallest — rows reorder by Actual value, and every formula referencing structured references (Budget[Actual], etc.) continues to work correctly because the references track the column, not fixed row numbers. - Click the filter-arrow on
Category, uncheck Select All, then check onlyRentandGroceries— the Table temporarily hides every other row (their row numbers appear in blue, signaling a filter is active) without deleting them. - Table Design > Filter Button toggle (checkbox in the ribbon) hides or shows the header filter arrows without removing the underlying filter/sort state.
- Re-open the
Categoryfilter and click Select All to restore every row.
5. Total Row¶
- Table Design > Total Row (checkbox) adds a summary row at the bottom of the Table.
- Click the cell under
Actualin that new Total Row — a dropdown appears withNone,Average,Count,Max,Min,Sum, and more. Choose Sum — it shows2285(including the Subscriptions row added in Section 3), generated as=SUBTOTAL(109,Budget[Actual])rather than a plainSUM, so it automatically ignores any rows hidden by a filter. - Set the
Budgetedcolumn's Total Row to Sum as well — it should read2170(2150original +20Subscriptions).
Cheat sheet¶
| Action | Shortcut / Location |
|---|---|
| Convert range to Table | Ctrl/⌘+T |
| Rename Table | Table Design > Table Name |
| Whole-column structured reference | TableName[ColumnName] |
| Same-row structured reference | TableName[@ColumnName] |
| Toggle Total Row | Table Design > Total Row |
| Toggle filter arrows | Table Design > Filter Button |
| Sort by column | Header filter-arrow > Sort Largest/Smallest |
| Filter to specific values | Header filter-arrow > uncheck values |
How It Actually Works¶
Converting a range to a Table (Ctrl+T) does something structurally
significant: it wraps that range in a named ListObject with its own
metadata — column names, a defined data body range, and a structured
reference scheme (Table1[Category] instead of A2:A6) — that Excel
keeps in sync automatically. A structured reference doesn't point at fixed
coordinates; it resolves relative to the Table's identity, so when a new
row is added the Table's boundary expands, every column formula
auto-fills into the new row (because the Table stores "this column's
formula" once and stamps it into new rows on insert), and any chart,
PivotTable, or formula built on Table1[Actual] automatically includes the
new data with no reference editing at all. This is the same underlying
mechanism that makes Tables resize correctly when you paste new rows below
them but not when you type past a completely blank gap row — the boundary
tracking watches for contiguous insertion at the Table's own edge, not for
data appearing anywhere near it.
Exercise¶
Convert the budget range in budget-tracker.xlsx into a Table named
Budget. Add =SUM(Budget[Actual]) and =SUM(Budget[Budgeted]) formulas
below it using structured references. Add a new category row
(Subscriptions, Budgeted 20, Actual 25) directly below the Table and
confirm it auto-expands with the Difference formula filled in
automatically. Turn on the Total Row and set both Budgeted and Actual to
Sum — confirm they read 2170 and 2285.