Named ranges and structured references
A name or a table column stands in for a cell address, so formulas read in words and, with tables, stay complete when rows are added.
Last updated: 14 October 2026
Explains: named range, structured reference
What it is: A name (VatRate) or a table column (Journal[Amount]) is a label that Excel resolves to a cell or range when it calculates: =B2*VatRate gives the same result as =B2*$E$2.
Why it matters: A formula such as =B2*$E$2 tells you where to look but not what you are looking at, and a table also keeps its references complete when rows are added. Clients use both all the time. They make formulas readable and hide where a value lives, so you need to know how to read and check them.
Two ways to give data a name
Excel offers two kinds of names. A named range (also called a name) is a label you attach to a cell, a range, a constant or a formula, such as VatRate for cell $E$2.
A table is a block of data that Excel treats as one object with a name of its own, and whose columns you address by header, such as Journal[Amount]. That second form is called a structured reference.
Both replace an address by a word, but they solve different problems. A name gives one value or one fixed area a meaning. A table gives a list that keeps growing a shape that Excel maintains for you, so formulas stay complete when rows are added.
Creating and managing a name
There are three places to work with names:
- in the Name Box (the quickest way): select the cell or range, type the name in the Name Box left of the formula bar and press Enter
- with Formulas > Define Name: opens a dialog where you also choose the scope and add a comment
- in Name Manager (Ctrl+F3): lists every name with its value, the range it refers to and its scope, and lets you edit, rename or delete
A name has to follow a few rules:
- it starts with a letter, an underscore or a backslash
- it has no spaces (use
VatRateorVat_Rate) - it may not look like a cell address
- it is not case sensitive and can hold up to 255 characters
Renaming a name in Name Manager updates every formula that uses it.
| Way | Where | Use it to |
|---|---|---|
| Name Box | Left of the formula bar | Name the selected cells in one step |
| Define Name | Formulas tab | Set scope and comment while creating |
| Name Manager | Ctrl+F3 | Review, edit, rename and delete all names |
| Create from Selection | Ctrl+Shift+F3 | Turn the headers of a block into names for its columns |
Scope: workbook or worksheet
Watch out: When a workbook name and a worksheet name share a word, the worksheet name wins on its own sheet. That is a quiet source of wrong totals, so avoid giving both the same word.
Every name has a scope. A workbook name works on every sheet under the same word.
A worksheet name only works on its own sheet, and the same word can exist on several sheets with a different meaning, for example Total on each monthly sheet. Name Manager shows the scope in its own column.
From another sheet you reach a worksheet name by putting the sheet in front: January!Total.
| Scope | Works | Typical use |
|---|---|---|
| Workbook | On every sheet, same word | VAT rate, materiality, year end |
| Worksheet | Only on its own sheet | The same layout copied per month or entity |
Names for constants and formulas
A name does not have to point to a cell. In the Refers to box of Name Manager you can type a constant such as =0.21 or a formula such as =Sheet1!$E$2*12. The first gives you a rate without a cell, the second a calculation you reuse under one word.
For an input that matters to the audit, prefer a labelled cell that you name. A reviewer then sees the value in the grid, can trace it, and the name only supplies the readable word. A rate hidden in Name Manager changes every formula and shows in no cell.
=ROUND(SUM(B2:B7)*VatRate,2)
=ROUND(SUM(B2:B7)*VatRate;2)
VatRate is the name of the input cell $E$2, so the formula says what it does.
=SUMIFS(C2:C9,C2:C9, ">"&ConfirmLimit)
=SUMIFS(C2:C9;C2:C9; ">"&ConfirmLimit)
A named threshold in a criterion: the amounts above the confirmation threshold.
Excel tables
Select a cell in your data and press Ctrl+T (or use Insert > Table, or Format as Table on the Home tab), and confirm that the data has headers.
Excel gives the block a name such as Table1; change it under Table Design in the Table Name box to something meaningful, for example Journal. Headers must be text and unique.
A table grows by itself. Type or paste a row directly under the last one and the table extends, formats the new row and copies a column formula down. The Total Row (in Table Design) adds a row with SUBTOTAL, which ignores rows hidden by a filter.
Structured references
A structured reference is built from:
- the table name
- the column header between brackets
- optionally, a special item that selects a part of the table
Excel writes it for you when you click a table column while typing a formula. The reference covers exactly the data rows, so it extends and shrinks with the table and never includes the header or the total row by accident.
The brackets follow a few rules:
- a header with a space needs no extra brackets:
Journal[Net amount] - extra brackets are needed for special characters in the header (comma, period, #, brackets, apostrophe) and for a header with a space after @:
[@[Net amount]] - inside the table,
[@Amount]means the cell of this row, so a calculated column reads =[@[Net amount]]*VatRate
Dutch Excel shows the special items translated, as the table says; the column headers and your table name stay as you typed them. The formulas on this site are stored in English form.
| Form | Refers to | In Dutch Excel |
|---|---|---|
Journal[Amount] | The data cells of the Amount column | Journal[Amount] |
Journal[@Amount] | The Amount cell in the row of the formula | Journal[@Amount] |
Journal[#Totals] | The total row only | Journal[#Totalen] |
Journal[[#Headers],[Amount]] | The header cell of the Amount column | Journal[[#Koppen];[Amount]] |
Journal[#Data] | All data rows, every column | Journal[#Gegevens] |
Journal[#All] | Headers, data and total row | Journal[#Alles] |
=SUM(Journal[Amount])
=SUM(Journal[Amount])
Adds the Amount column of the table; a new row is included without editing the formula.
=SUMIFS(Journal[Amount],Journal[Account], 4500)
=SUMIFS(Journal[Amount];Journal[Account]; 4500)
The same account test as with typed ranges, now tied to the table columns.
=Journal[[#Totals],[Amount]]
=Journal[[#Totals],[Amount]]
One cell of the total row: the column total that Excel keeps for you.
When to use which
Use a table when the data is a list that gets longer: a journal, an invoice list, a sample. Use a name for a single value or a fixed area that several formulas share: a tax rate, a materiality, a year-end date. The two combine well: a table for the data and names for the inputs that test it.
The worked examples below use typed addresses so that this site can compute and check them. In your own workbook, replace the address by the name or the structured reference shown in the walkthrough.
| Situation | Use | Why |
|---|---|---|
| Journal or invoice list that grows | Table | Formulas extend with new rows |
| VAT rate or materiality used in many formulas | Name on a labelled input cell | One place to change, visible in the grid |
| Fixed lookup list (VAT codes) | Table, or a name on the range | The name reads better in a lookup |
| Fact that never changes (12 months) | The number itself | A name adds nothing here |
| Same calculation in many places | Named formula, with care | Hard to inspect; document it |
The audit angle
Names make a client's formulas readable, but they hide where a value lives: =B2*VatRate does not show which cell or constant VatRate is. Open Name Manager first on any client workbook. Then check:
- the Refers to column for each name
- names with errors (sort or filter on them)
- names that refer to #REF! or to another workbook
A deleted sheet leaves exactly such names behind.
Also check these:
- what a name contains: a constant typed into Name Manager is an input without a cell, and a named formula can hide a calculation
- hidden names: a macro can hide names from Name Manager, so when a workbook behaves oddly, look at the formulas themselves too (Ctrl+` shows them all)
- tables: whether a total row, a filter or a hidden column changes what a structured reference sees
Worked examples
Example1 of 3Beginner
Recalculate the VAT on sales invoices with one rate cell
Veldhuis Installatie BV books sales invoices with 21% VAT. You recalculate the VAT on six invoices and compare the total with what the bookkeeper booked. The rate sits in one labelled cell, E2, which you name VatRate in your own file.
| Row | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Invoice no. | Net amount | VAT booked | VAT rate | Booked minus recalculated | |||
| 2 | 25-4201 | €12,500.00€ 12.500,00 | €2,625.00€ 2.625,00 | 21%21% | -€0.80€ -0,80=SUM(C2:C7)-ROUND(SUM(B2:B7)*E2, 2)=SUM(C2:C7)-ROUND(SUM(B2:B7)*E2; 2) | |||
| 3 | 25-4202 | €8,400.00€ 8.400,00 | €1,764.00€ 1.764,00 | |||||
| 4 | 25-4203 | €3,250.00€ 3.250,00 | €682.50€ 682,50 | |||||
| 5 | 25-4204 | €15,800.00€ 15.800,00 | €3,318.00€ 3.318,00 | |||||
| 6 | 25-4205 | €6,120.00€ 6.120,00 | €1,285.20€ 1.285,20 | |||||
| 7 | 25-4206 | €9,980.00€ 9.980,00 | €2,095.00€ 2.095,00 | |||||
| 8 |
Swipe sideways to see all columns
Formula in G2
=SUM(C2:C7)-ROUND(SUM(B2:B7)*E2,2)
=SUM(C2:C7)-ROUND(SUM(B2:B7)*E2;2)
Result: -€0.80€ -0,80
Step by step
- The six net amounts in
B2:B7add up to 12,50012.500 + 8,4008.400 + 3,2503.250 + 15,80015.800 + 6,1206.120 + 9,9809.980 = 56,05056.050. E2holds 21%. Multiplied: 56,05056.050 x 0.21 = 11,770.5011.770,50. ROUND to two decimals leaves 11,770.5011.770,50.- The booked VAT in
C2:C7adds up to 2,6252.625 + 1,7641.764 + 682.50 + 3,3183.318 + 1,285.201.285,20 + 2,0952.095 = 11,769.7011.769,70. - Booked minus recalculated: 11,769.7011.769,70 - 11,770.5011.770,50 = -0.80. The booked VAT is 80 cents too low.
- The 80 cents come from invoice
25-4206: 9,9809.980 x 0.21 = 2,095.802.095,80, but 2,095.002.095,00 was booked. Work this out per invoice to find the line. - With the name in place the formula reads =SUM(C2:C7)-ROUND(SUM(B2:B7)*VatRate,2). Change
E2to 9% and every formula that usesVatRatefollows.
Watch out: If the rate were typed inside the formula as 0.21, a change to 9% would need an edit in every formula, and a missed one would stay at 21% without any sign.
More on this example: why it works, 1 variation
Why it works
The rate lives in one cell, so the whole check changes when you change that cell, and a reviewer sees the value in the grid. The name does not change the calculation; it only replaces E2 by a word that says what E2 is.
Variations
=SUM(C2:C7)-ROUND(SUM(B2:B7)*VatRate,2)
=SUM(C2:C7)-ROUND(SUM(B2:B7)*VatRate;2)
The same check with the name; this form is shown, not computed, because it needs the name VatRate to be defined.
Example2 of 3Intermediate
Total the rent postings and see why a table keeps it complete
You test housing costs of Veldhuis Installatie BV. The journal lines are in A1:D9, and the last line, 25-2008, was added after the first formula was typed. You total account 4500 and check whether the range still reaches every line.
| Row | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Entry no. | Account | Description | Amount | Account | Total | ||
| 2 | 25-2001 | 45004500 | Rent office January | €4,200.00€ 4.200,00 | 45004500 | €17,412.35€ 17.412,35=SUMIFS(D2:D9, B2:B9, F2)=SUMIFS(D2:D9; B2:B9; F2) | ||
| 3 | 25-2002 | 40004000 | Payroll January | €18,350.00€ 18.350,00 | ||||
| 4 | 25-2003 | 45004500 | Rent office February | €4,200.00€ 4.200,00 | ||||
| 5 | 25-2004 | 45104510 | Service charges | €685.40€ 685,40 | ||||
| 6 | 25-2005 | 45004500 | Rent office March | €4,200.00€ 4.200,00 | ||||
| 7 | 25-2006 | 40004000 | Payroll February | €18,350.00€ 18.350,00 | ||||
| 8 | 25-2007 | 45004500 | Cleaning office | €612.35€ 612,35 | ||||
| 9 | 25-2008 | 45004500 | Rent office April | €4,200.00€ 4.200,00 | ||||
| 10 |
Swipe sideways to see all columns
Formula in G2
=SUMIFS(D2:D9,B2:B9, F2)
=SUMIFS(D2:D9;B2:B9; F2)
Result: €17,412.35€ 17.412,35
Step by step
- SUMIFS adds the cells of D2:D9 for which the matching cell in B2:B9 equals F2, which holds 4500.
- Account 4500 is in rows 2, 4, 6, 8 and 9. Account 4000 (rows 3 and 7) and 4510 (row 5) do not qualify.
- The amounts of those rows: 4,2004.200 + 4,2004.200 + 4,2004.200 + 612.35 + 4,2004.200.
- 4,2004.200 x 4 = 16,80016.800; 16,80016.800 + 612.35 = 17,412.3517.412,35.
- Row 9 (25-2008) is the line added last. The ranges end at row 9, so it counts. Had the formula been typed over rows 2 to 8, the result would have been 13,212.3513.212,35, which is 4,2004.200 too low.
- In a table named Journal the formula reads =SUMIFS(Journal[Amount],Journal[Account],F2). A line typed in row 10 extends the table and the formula, with no edit.
Watch out: A range that stops at the last row you saw is silent when the client adds a line: the total is wrong and no error appears. Compare the row count with the source when you receive a refreshed file.
More on this example: why it works, 2 variations
Why it works
A typed range such as D2:D9 is fixed: Excel adjusts it for inserted rows inside it, but not for rows added below it. A table column is a reference to whatever data rows the table has at that moment, so the formula follows the table.
Variations
=SUMIFS(Journal[Amount],Journal[Account], F2)
=SUMIFS(Journal[Amount];Journal[Account]; F2)
The table form of the same formula; it needs the data to be a table named Journal.
=SUM(Journal[Amount])
=SUM(Journal[Amount])
Total of the whole Amount column of the table.
Example3 of 3Advanced
Cover the receivables above the confirmation threshold
In the receivables list of Veldhuis Installatie BV you select every debtor with a balance above a confirmation threshold of 10,00010.000 for a balance confirmation. You want to know what share of the total balance those debtors cover.
The threshold sits in E2 and is named ConfirmLimit in your file.
| Row | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Debtor | Balance | Confirmation threshold | Coverage | ||||
| 2 | D1001 | €48,250.00€ 48.250,00 | €10,000.00€ 10.000,00 | 85.9%85,9%=ROUND(SUMIFS(B2:B9, B2:B9, ">"&E2)/SUM(B2:B9), 3)=ROUND(SUMIFS(B2:B9; B2:B9; ">"&E2)/SUM(B2:B9); 3) | ||||
| 3 | D1002 | €12,900.00€ 12.900,00 | ||||||
| 4 | D1003 | €2,310.50€ 2.310,50 | ||||||
| 5 | D1004 | €31,475.25€ 31.475,25 | ||||||
| 6 | D1005 | €760.00€ 760,00 | ||||||
| 7 | D1006 | €18,040.00€ 18.040,00 | ||||||
| 8 | D1007 | €5,220.75€ 5.220,75 | ||||||
| 9 | D1008 | €9,855.00€ 9.855,00 | ||||||
| 10 |
Swipe sideways to see all columns
Formula in G2
=ROUND(SUMIFS(B2:B9,B2:B9, ">"&E2)/SUM(B2:B9), 3)
=ROUND(SUMIFS(B2:B9;B2:B9; ">"&E2)/SUM(B2:B9); 3)
Result: 85.9%85,9%
Step by step
- The criterion is built first: ">"&E2 joins the text
>and the number 10,00010.000 into">10000". - SUMIFS adds the balances in
B2:B9that are greater than 10,00010.000:D100148,25048.250,D100212,90012.900,D100431,475.2531.475,25 andD100618,04018.040. The other four are 10,00010.000 or less. - 48,25048.250 + 12,90012.900 + 31,475.2531.475,25 + 18,04018.040 = 110,665.25110.665,25.
- SUM of all eight balances: 110,665.25110.665,25 + 2,310.502.310,50 + 760 + 5,220.755.220,75 + 9,8559.855 = 128,811.50128.811,50.
- The share is 110,665.25110.665,25 / 128,811.50128.811,50 = 0.85912...; ROUND to three decimals gives 0.859, shown as 85.9%.
- Debtor
D1008(9,8559.855) sits below the threshold, close to it, and is not selected. With the name, the formula reads ">"&ConfirmLimit: change the threshold once and the coverage updates.
Watch out: Writing ">E2" in quotes compares with the text E2, not with the cell, and finds nothing. The operator goes in quotes, the reference outside, joined with &.
More on this example: why it works, 2 variations
Why it works
The threshold is an input of the audit approach, so it belongs in one visible cell with a name that states its meaning. The criterion text is assembled from that cell, so the selection and the coverage figure always use the same threshold.
Variations
=ROUND(SUMIFS(B2:B9,B2:B9, ">"&ConfirmLimit)/SUM(B2:B9), 3)
=ROUND(SUMIFS(B2:B9;B2:B9; ">"&ConfirmLimit)/SUM(B2:B9); 3)
The same coverage with the named threshold; shown, not computed here.
=COUNTIFS(B2:B9,">"&E2)
=COUNTIFS(B2:B9;">"&E2)
How many debtors to confirm: 4.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| Excel refuses the name you want for the rate cell | Excel refuses the name VAT21 for your VAT rate cell. | VAT21 is a valid cell address (column VAT, row 21), and a name may not look like one. Use VatRate21 or Vat_21. The same applies to names such as Q3 or R1. |
| The total misses a line added below the range | The total =SUM(D2:D9) misses the line a colleague added in row 10. | A typed range does not extend for rows added below it. Make the data a table and use =SUM(Journal[Amount]), which follows the table. |
| #NAME? after a name is deleted, #REF! after a sheet is deleted | A formula shows #NAME? after a name was deleted, or #REF! after the sheet it pointed to was deleted. | Open Name Manager (Ctrl+F3). A name whose Refers to ends in #REF! has lost its target; point it to the right range again. For a deleted name, define it again with the same word. |
| [@Amount] gives an error outside the table | =[@Amount]*2 typed in a cell outside the table gives an error, or #VALUE! on a row the table does not occupy. | Outside the table the table name is required: =Journal[@Amount]*2, and the formula's row must lie within the table's rows. To use the whole column, write Journal[Amount]. |
| A name points to a different cell each time you use it | A name you made while another cell was selected points to a different cell each time you use it. | The Refers to box holds a relative address such as =Sheet1!A1, which is read from the cell where you use the name. Type absolute addresses: =Sheet1!$A$1. |
| Everything recalculates, but no cell holds a new rate | Everything recalculates to a different VAT amount, but no cell on the sheet contains a new rate. | The rate is a constant typed in Name Manager (=0.21). Look at the Refers to column. For audit evidence, keep rates in a labelled cell and name that cell. |