ExcelReady
CourseMock testsFunction guidesBlog
Start freeStart learning for free
ExcelReady

Be Excel-ready before day one. Hands-on practice in your browser, with instant feedback.

Learn

  • Course
  • Mock tests
  • Function guides
  • Blog

Test prep

  • Excel level test
  • Excel test practice
  • Free screening quiz
  • Certificate

Company

  • Editorial policy
  • Contact
  • Terms
  • Privacy

© 2026 ExcelReady. All rights reserved.

  1. Blog
  2. Errors & fixes
  3. VLOOKUP Returning the Wrong Value? Here's Why

VLOOKUP Returning the Wrong Value? Here's Why

By ExcelReady Team·Updated November 1, 2026·6 min read

The short answer

VLOOKUP usually returns a wrong value because the fourth argument is missing, so it uses approximate match and grabs the nearest smaller value instead of an exact match. Add FALSE: =VLOOKUP(E2,A2:C7,3,FALSE). Other causes are duplicate lookup values, a wrong or outdated column number, an unlocked table range, and wildcard characters.

Key takeaways

  • Leaving out the fourth argument means approximate match, which can return a wrong value with no error.
  • With FALSE, a missing value gives #N/A, which is better than a silent wrong answer.
  • VLOOKUP always returns the first match, so duplicate IDs hide later rows.
  • The column number doesn't change when you insert columns; MATCH or XLOOKUP avoid this.
  • Lock the table with $ signs before you fill a VLOOKUP down.
On this page+
  1. Why VLOOKUP returns a wrong value instead of an error
  2. Cause 1: the fourth argument is missing
  3. Cause 2: approximate match on unsorted data
  4. Cause 3: duplicate lookup values
  5. Cause 4: the wrong column number
  6. Cause 5: the table range moved when you copied the formula
  7. Cause 6: wildcards in the lookup value
  8. Practise it

VLOOKUP returning a wrong value is worse than an error, because nothing tells you it's wrong. In most cases, the formula is missing its fourth argument, so VLOOKUP does an approximate match and picks a nearby row. This guide explains the six reasons VLOOKUP is returning the wrong value and shows how to fix each one.

Why VLOOKUP returns a wrong value instead of an error#

VLOOKUP has four arguments, and the last one decides how it matches:

Excel formula
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
range_lookupMatch typeIf the value isn't found
FALSE (or 0)Exact matchReturns #N/A
TRUE (or 1)Approximate matchReturns the nearest smaller value
Left outApproximate matchReturns the nearest smaller value

The key point: leaving the fourth argument out is the same as TRUE. Approximate match is meant for tier tables, like tax bands or discount levels. On a list of IDs, it returns a value from a different row instead of telling you the ID is missing.

Check these causes in order:

  1. The fourth argument is missing or TRUE.
  2. Approximate match on unsorted data.
  3. Duplicate lookup values.
  4. The wrong column number, often after a column was inserted.
  5. The table range moved when the formula was copied.
  6. Wildcard characters in the lookup value.

Cause 1: the fourth argument is missing#

Here is a product list sorted by ID. There is no product 104:

ABC
1IDProductPrice
2101Chair120
3102Shelf180
4103Mouse25
5105Desk250
6106Lamp45
7108Monitor210

This formula has no fourth argument:

Excel formula
=VLOOKUP(104,A2:C7,3)

It returns 25, the price of the Mouse. VLOOKUP didn't find 104, so it stopped at the largest ID below it, 103, and returned that row's price. No error, wrong answer.

Add FALSE to force an exact match:

Excel formula
=VLOOKUP(104,A2:C7,3,FALSE)

Now the result is #N/A, which correctly tells you product 104 doesn't exist. You can then handle it with =IFNA(VLOOKUP(104,A2:C7,3,FALSE),"Not found"). The article on TRUE vs FALSE in VLOOKUP explains the two modes side by side.

Cause 2: approximate match on unsorted data#

Approximate match only works when the first column is sorted from smallest to largest. It doesn't read every row. It jumps through the list, assuming it's in order. On unsorted data, it can stop at the wrong place and return a value from an unrelated row. The answer can even change if someone re-sorts the list.

If you meant to use approximate match, for example for commission tiers, sort the first column in ascending order (Data > Sort A to Z). If you didn't, add FALSE. The guide to VLOOKUP approximate match shows when TRUE is the right choice.

Cause 3: duplicate lookup values#

VLOOKUP returns the first match it finds and ignores the rest. If ID 102 appears twice, once for an old price and once for a new one, VLOOKUP always returns the first row.

Check for duplicates with COUNTIF. In a spare column, type =COUNTIF($A$2:$A$7,A2) and fill down. Any result above 1 is a duplicate. Remove the old rows, or use a more specific key, such as ID plus date. If you really need every match, FILTER can return all of them.

Cause 4: the wrong column number#

The third argument is a plain number that counts columns from the left edge of the table. If you count wrong, you get a value from the next column over. In the table above, Product is column 2 and Price is column 3.

It also goes wrong when someone inserts a column. Say you add a Category column between Product and Price. Excel stretches the range to A2:D7, but the 3 stays a 3, so the formula now returns the category instead of the price.

Make the column number follow the header with MATCH:

Excel formula
=VLOOKUP(E2,$A$2:$D$7,MATCH("Price",$A$1:$D$1,0),FALSE)

MATCH finds "Price" in the header row and returns its position, so the formula keeps working after columns move. XLOOKUP and INDEX MATCH avoid column numbers completely. The VLOOKUP function guide lists every argument.

Cause 5: the table range moved when you copied the formula#

If the table range isn't locked, it shifts as you fill the formula down. In F2 you write =VLOOKUP(E2,A2:C7,3,FALSE). In F5, the copied formula reads =VLOOKUP(E5,A5:C10,3,FALSE). The first three products are no longer in the table. With FALSE you'd see #N/A, but with approximate match you'd get wrong values.

Lock the table with $ signs before you copy:

Excel formula
=VLOOKUP(E2,$A$2:$C$7,3,FALSE)

Select the range inside the formula and press F4 to add the $ signs (Mac: ⌘T).

Cause 6: wildcards in the lookup value#

With FALSE, VLOOKUP treats * and ? in the lookup value as wildcards. A wildcard stands for other characters: * for any number of characters, ? for exactly one. So looking up the code "A*" matches the first code that starts with A, not the literal text A*.

If your codes really contain * or ?, put a tilde in front to make them literal: look up "A~*" instead. You can do that with a formula: =VLOOKUP(SUBSTITUTE(E2,"*","~*"),$A$2:$C$7,3,FALSE).

If the problem isn't a wrong value but an error like #N/A, see why VLOOKUP is not working for spaces, text numbers and other causes. For job tests, the VLOOKUP interview questions cover these same traps.

Practise it#

Practise approximate and exact match VLOOKUP in a live spreadsheet: you'll see exactly when TRUE is right and when it returns the wrong row. Then fix broken lookups in the lookup errors lesson, where each formula is checked instantly. Or try the exercise on this page first.

Try it yourself

This is a live spreadsheet. Type the formula in the green cell and press Enter.

The ID list in A2:A7 isn't sorted. Click F2 and look up the price for the ID in E2 with VLOOKUP, using FALSE for an exact match. Press Enter.

fx
ABCDEFG
1
ID
Product
Price
Find ID
Price
2
104
Desk
250
102
3
101
Chair
120
4
107
Lamp
45
5
102
Shelf
180
6
109
Monitor
210
7
103
Mouse
25
8
9
10

Tip: Four parts: what to find, the table, the column number (Price is column 3), and FALSE.

Practise this in a lesson

LessonVLOOKUP approximate matchUse VLOOKUP with TRUE to place values into tiers like commission bands, tax brackets or grades.LessonFixing lookup errorsDiagnose #N/A, #REF! and silent wrong answers in lookups, then handle missing items gracefully.Function guideVLOOKUPLearn VLOOKUP with clear examples, the 4 most common mistakes, and a live practice exercise you can try in your browser.

Frequently asked questions

Why is my VLOOKUP returning the wrong value?

+

Most often the fourth argument is missing or TRUE, so VLOOKUP uses approximate match. Add FALSE as the fourth argument to force an exact match.

Why does VLOOKUP return a value from the wrong row?

+

Approximate match on data that isn't sorted, or duplicate lookup values, are the usual reasons. VLOOKUP returns the first match it finds, so check for repeated IDs.

Why does VLOOKUP return the wrong column after inserting a column?

+

The column number is a fixed number, so it doesn't move when the table changes. Use MATCH to find the column number from the header, or switch to XLOOKUP or INDEX MATCH.

Why does my VLOOKUP work in the first row but not when I copy it down?

+

The table range wasn't locked, so it shifted down as you copied. Use absolute references like $A$2:$C$7 for the table.

Sources

  • VLOOKUP function - Microsoft Support
  • Switch between relative, absolute, and mixed references - Microsoft Support

Written and checked by the ExcelReady Team. First published November 1, 2026. The practice exercise runs in the same formula engine as our lessons. Found a mistake? Read our editorial policy or email hello@excelready.app.

On this page

  1. Why VLOOKUP returns a wrong value instead of an error
  2. Cause 1: the fourth argument is missing
  3. Cause 2: approximate match on unsorted data
  4. Cause 3: duplicate lookup values
  5. Cause 4: the wrong column number
  6. Cause 5: the table range moved when you copied the formula
  7. Cause 6: wildcards in the lookup value
  8. Practise it

Keep reading

Tests & careers· 5 min read

VLOOKUP Interview Questions and Answers

VLOOKUP interview questions usually ask you to explain the four arguments, the difference between FALSE (exact match) and TRUE (approximate match), why VLOOKUP returns #N/A or a wrong value, why it can't look left, how to lock the table with $, and when to use XLOOKUP or INDEX MATCH instead. Answer each with a short example.

Lookups· 7 min read

VLOOKUP Approximate Match for Tiers and Bands

A VLOOKUP approximate match uses TRUE as the 4th argument, like =VLOOKUP(B2,$F$2:$H$5,3,TRUE). It finds the largest value in the first column that is less than or equal to your number, so 62,000 lands in the band that starts at 50,000. The first column must be sorted from smallest to largest.

Lookups· 6 min read

VLOOKUP Not Working? 8 Causes and Fixes

When VLOOKUP is not working, the usual causes are a missing FALSE for exact match, extra spaces, numbers stored as text, a lookup value that isn't in the first column, or a table range that shifts when copied. Check each one in turn. TRIM fixes spaces, $ signs lock the range, and IFNA handles values that are truly missing.

Don't just read about Excel. Do it.

Practise real formulas in a live spreadsheet with instant feedback, right in your browser. Nothing to download.

Start learning for free