
VLOOKUP answers one question: “find this key in that table, and give me the value sitting next to it.” It’s how you pull a price from a product list, a name from an ID, a rate from a lookup table — the function that stitches two datasets together by a shared key. It’s also the function people get wrong most often, because of one default argument and one hard limitation. This covers how to write it so it works the first time, the two mistakes that cause nearly every failure, and when a newer function is the better call.
The four arguments
VLOOKUP takes four inputs: what to find, where to look, which column to return, and whether you want an exact match. Say you have a product table in columns A to C:
| A | B | C | |
|---|---|---|---|
| 1 | ID | Product | Price |
| 2 | P-204 | Stapler | 12.50 |
=VLOOKUP("P-204", A2:C100, 3, FALSE)
This finds “P-204” in the first column of the range, then returns the value from the third column — the price, 12.50. The column index is counted from the left edge of your table range, not the worksheet: column 3 means the third column of A:C, which is C. Get that count right and the formula reads cleanly; the only piece left to explain is that last argument, FALSE, which matters more than anything else here. Microsoft’s VLOOKUP reference documents all four arguments.
Always end with FALSE
This single habit prevents the most insidious VLOOKUP bug: not an error, but a wrong answer that looks plausible. With TRUE, VLOOKUP can return the price of a different product entirely because it found the nearest match instead of the exact one. FALSE makes it return #N/A when there’s no exact hit — which is annoying but honest, and far better than a wrong number flowing silently into a total. Make FALSE muscle memory and you’ve eliminated most of the trouble VLOOKUP causes.
When approximate match is the right call
TRUE isn’t always wrong — it’s exactly right for bracket lookups, where you want “the row this value falls into” rather than an exact hit. Grade scales, tax brackets, and commission tiers all fit. With a table sorted ascending by the threshold:
=VLOOKUP(82, $A$2:$B$6, 2, TRUE) 'returns the grade for an 82
If the table lists 0→F, 60→D, 70→C, 80→B, 90→A, this returns “B” — the band an 82 falls into, because TRUE finds the largest threshold not exceeding the value. The one rule that makes it work: the lookup column must be sorted ascending, or approximate match returns nonsense. That sorting requirement is the flip side of why TRUE is dangerous as a default — it’s perfect when you mean it and sorted for it, and silently wrong when you don’t.
Lock the table so it copies down
You’ll almost always write one VLOOKUP and copy it down a column. Without absolute references, the table range drifts as you copy, and rows lower down look at a shrinking table.
=VLOOKUP(E2, $A$2:$C$100, 3, FALSE)
The dollar signs in $A$2:$C$100 pin the table in place so every copied formula searches the same full range, while E2 stays relative and steps down with each row. Press F4 while the range is selected to add the dollar signs in one tap. Skipping this is the cause of VLOOKUPs that work at the top of a column and mysteriously return #N/A further down — the table reference slid out from under them.
The everyday job: pull from another sheet
Most real VLOOKUPs reach into a different sheet — an order list on one tab pulling prices from a product sheet on another. The table range just gets a sheet name in front of it:
=VLOOKUP(E2, Products!$A$2:$C$100, 3, FALSE)
The Products! prefix tells VLOOKUP to search the range on the Products sheet, while the formula lives on your orders sheet. This is the pattern that makes VLOOKUP genuinely powerful: keep your reference data — prices, rates, employee details — on its own clean sheet, and pull from it wherever you need, so a price change in one place updates every formula that looks it up. The same syntax reaches into another workbook entirely, though a single shared sheet is usually tidier than juggling linked files.
VLOOKUP only looks to the right
The hard limitation: VLOOKUP searches the leftmost column of your range and returns a column to its right. It cannot return a value to the left of the lookup column.
It’s worth internalizing early, because you’ll hit it the first time your data isn’t laid out conveniently. Rather than reshuffle a source table you don’t control, this is usually the moment to reach for one of the alternatives below — they remove the limitation entirely instead of working around it.
Tame #N/A with IFERROR
A #N/A means “not found,” which is sometimes expected — a new ID that isn’t in the table yet. Wrapping the lookup in IFERROR replaces the ugly error with something readable.
=IFERROR(VLOOKUP(E2, $A$2:$C$100, 3, FALSE), "Not found")
Now an unmatched lookup shows “Not found” (or 0, or a blank — whatever you specify) instead of #N/A spreading through your sheet. Use it deliberately, though: IFERROR hides every error, so during setup it’s better to see the raw #N/A and confirm it means “no match” rather than “I mistyped the range.” Add IFERROR once the formula is proven correct, as the finishing touch that keeps a report clean.
When to switch to XLOOKUP or INDEX-MATCH
VLOOKUP isn’t going away, but two functions do its job with fewer sharp edges. Reach for them when VLOOKUP fights you.
| Function | Why it’s better |
|---|---|
| XLOOKUP | Looks any direction, exact match by default, built-in “if not found” — the modern replacement |
| INDEX-MATCH | Looks any direction, doesn’t break when columns are inserted |
XLOOKUP is the one to learn next — it fixes the leftward-lookup limit and the fragile column index in one go, and returns exact matches without the FALSE argument. INDEX-MATCH is the older two-function combo that does the same and still works in every version of Excel. VLOOKUP remains the right tool for a quick lookup in a simple, stable table — and it’s everywhere in existing spreadsheets, so you have to read it regardless. Learn it well, always type FALSE, lock the table, and know when its rightward-only limit means it’s time to switch. For the broader toolkit, the essential Excel formulas guide puts VLOOKUP in context with the functions it works alongside.
