Lookup function

VLOOKUP

Look a value up in the first column of a block.

Purpose

Read a value off a reference table by matching on its first column

Returns

The value in the column you asked for, from the row that matched

Syntax

=VLOOKUP(lookup_value, table, column_number, [exact_match])

ArgumentRequiredWhat goes here
lookup_valueRequiredThe value to find, like E2.
tableRequiredThe block to search. Its first column is the one searched.
column_numberRequiredWhich column of that block to read back, counting the first as 1.
exact_matchOptionalFALSE for an exact match, which is almost always what you want.

How to use VLOOKUP

VLOOKUP takes what to look for, the block to look in, which column of that block to read, and whether the match has to be exact.

The last argument is the one that matters most. FALSE means exact, and on a ledger the answer is always FALSE. Leaving it out means approximate, which quietly returns the nearest row below and looks like a real answer.

The column number counts from the left edge of the block, not from column A of the sheet. Insert a column inside the block and every formula pointing at it is now reading the wrong one, with no error to say so.

The value you match on has to be in the first column of the block. That is the limitation people hit, and INDEX with MATCH or XLOOKUP is the way around it.

Anchor the block with dollar signs before copying the formula down, or the range slides a row at a time and the bottom of the column stops finding anything.

Examples

Every result below is worked out by the same evaluator that marks your answers, on the sheet shown here.

Payables ageing — October.xlsxSheet1
Harbour Foods payables at 31 October 2026, with supplier terms alongside
ABCDEFGH
1InvoiceSupplierStatusDays overdueAmountSupplierTerms (days)
2INV-8801Brightwell PaperOverdue12940Ashgrove Catering30
3INV-8802Calder UtilitiesQueried471180Brightwell Paper30
4INV-8803Meridian FreightOverdue632450Calder Utilities14
5INV-8804Ashgrove CateringOn terms0405Meridian Freight45
6INV-8805Brightwell PaperOverdue38760Thornbury Print60
7INV-8806Thornbury PrintOverdue911320
8INV-8807Meridian FreightOn terms0580
9INV-8808Calder UtilitiesOverdue24215
FormulaResult
=VLOOKUP(B2,G2:H6,2,FALSE)Brightwell Paper's agreed terms, read off the table on the right.30
=VLOOKUP(B7,$G$2:$H$6,2,FALSE)The same formula with the block anchored, which is how it survives being filled down a column.60
=D2-VLOOKUP(B2,G2:H6,2,FALSE)Days past the agreed terms, which needs the lookup before it can be worked out. Negative means the invoice is still inside its terms.-18
=IFERROR(VLOOKUP("Harbour Ltd",G2:H6,2,FALSE),30)A supplier that is not on the table. The fallback is a decision about what a missing supplier means, and should only be written once the lookup has been proved on a row that works.30

Notes

  • Always write FALSE as the fourth argument. Approximate matching on a ledger returns a wrong answer rather than an error.
  • The column number is counted inside the block, so inserting a column breaks every formula pointing at it and nothing warns you.
  • VLOOKUP cannot read a column to the left of the one it matched on.
Practise VLOOKUP in Unit 06

A reference tells you what it does. A unit makes you use it.