AutomateMyJob
Back to BlogExcel Tips

Stop Using VLOOKUP Wrong: Common Mistakes and How to Fix Them

Jennifer Walsh8 min read

Stop Using VLOOKUP Wrong: Common Mistakes and How to Fix Them

VLOOKUP is probably the most used—and most misused—function in Excel. I've reviewed thousands of spreadsheets, and the same mistakes appear again and again. Let's fix them once and for all.

The Problem

Your VLOOKUP returns:

  • #N/A when you KNOW the value exists
  • Wrong values that don't match your lookup
  • Errors after you insert or delete columns
  • Different results than you expected

Sound familiar? You're not alone.

The Solution

Understanding these common mistakes will transform your VLOOKUPs from frustrating to reliable. Let's diagnose and fix each issue.

What You'll Need

  • Any version of Excel
  • A lookup scenario to practice with
  • Willingness to unlearn bad habits

Mistake #1: Using TRUE Instead of FALSE (The Silent Killer)

The Mistake:

=VLOOKUP(A2, Data!A:C, 2, TRUE)

Why It's Wrong: The fourth argument (TRUE or omitting it) tells Excel to find an "approximate match." This is designed for sorted numerical ranges like tax brackets. For most lookups, you want exact matches.

What Happens: Excel finds the largest value LESS THAN OR EQUAL TO your lookup value. If your data isn't sorted, you get unpredictable, wrong results.

The Fix:

=VLOOKUP(A2, Data!A:C, 2, FALSE)

ALWAYS use FALSE (or 0) for exact matches. This is the fix for 80% of VLOOKUP problems.

Rule: Unless you're looking up ranges (tax brackets, grade scales), always use FALSE.

Mistake #2: Extra Spaces in Your Data

The Mistake: Your lookup value is "John Smith" but your data contains "John Smith " (with trailing space).

Why It's Wrong: Excel sees these as different values. Your VLOOKUP returns #N/A even though you can "see" the match.

How to Detect:

=LEN(A2)

If "John Smith" shows 11 characters but should be 10, you have hidden spaces.

The Fix: Clean your data with TRIM:

=VLOOKUP(TRIM(A2), Data!A:C, 2, FALSE)

Or clean the entire column first:

  1. Insert helper column
  2. Use =TRIM(A2) and copy down
  3. Copy helper column, Paste Special > Values over original
  4. Delete helper column

Mistake #3: Hardcoded Column Numbers

The Mistake:

=VLOOKUP(A2, B:F, 3, FALSE)

Why It's Wrong: If someone inserts a column between B and F, your formula still returns column 3—but that's now a different column than intended.

The Fix: Use MATCH to dynamically find the column:

=VLOOKUP(A2, B:F, MATCH("Price", B1:F1, 0), FALSE)

Or better yet, use INDEX-MATCH:

=INDEX(D:D, MATCH(A2, B:B, 0))

This explicitly references the return column and never breaks.

Mistake #4: Looking Up in the Wrong Column

The Mistake: Your table has columns in this order: Name | ID | Department | Salary

You write:

=VLOOKUP(F2, A:D, 4, FALSE)

Expecting to find F2 in the ID column... but VLOOKUP always searches the FIRST column of your range (Names, not IDs).

Why It's Wrong: VLOOKUP only looks in the leftmost column of your table_array.

The Fix: Adjust your range to start with the lookup column:

=VLOOKUP(F2, B:D, 3, FALSE)

Or use INDEX-MATCH which can look up in any column:

=INDEX(D:D, MATCH(F2, B:B, 0))

Mistake #5: Mixing Data Types

The Mistake: Looking up "123" (text) in a column of 123 (numbers), or vice versa.

Why It's Wrong: Excel treats text-123 and number-123 as completely different values.

How to Detect: Numbers align right; text aligns left (by default). Also:

=ISNUMBER(A2)

The Fix: Convert to the same type:

Text to Number:

=VLOOKUP(VALUE(A2), Data!A:C, 2, FALSE)

Number to Text:

=VLOOKUP(TEXT(A2, "0"), Data!A:C, 2, FALSE)

Or fix the source data:

  • Text to Numbers: Select cells > Data > Text to Columns > Finish
  • Numbers to Text: Use TEXT function or Format Cells

Mistake #6: Searching Entire Columns (Performance Issue)

The Mistake:

=VLOOKUP(A2, A:C, 2, FALSE)

Why It's Problem: A:C means searching 1,048,576 rows. Your workbook becomes slow, especially with multiple VLOOKUPs.

The Fix: Limit your range to actual data:

=VLOOKUP(A2, A1:C1000, 2, FALSE)

Or use a Table reference that auto-adjusts:

=VLOOKUP(A2, Table1, 2, FALSE)

Mistake #7: No Error Handling

The Mistake:

=VLOOKUP(A2, Data!A:C, 2, FALSE)

Why It's Wrong: When A2 isn't found, you get an ugly #N/A error. In reports, this looks unprofessional.

The Fix: Wrap in IFERROR:

=IFERROR(VLOOKUP(A2, Data!A:C, 2, FALSE), "Not Found")

Or use IFNA for more targeted error handling:

=IFNA(VLOOKUP(A2, Data!A:C, 2, FALSE), "Not Found")

IFNA only catches #N/A, letting other errors (like #REF!) show—which might indicate a real problem.

The Complete Solution

Here's a robust VLOOKUP that avoids all common mistakes:

Prompt
=IFERROR(
    VLOOKUP(
        TRIM(A2),
        Table1,
        MATCH("Price", Table1[#Headers], 0),
        FALSE
    ),
    "Not Found"
)

Formula Breakdown

ComponentPurpose
TRIM(A2)Removes hidden spaces from lookup value
Table1Uses table reference (auto-expands, clear range)
MATCH("Price", ...)Dynamically finds column (won't break if columns move)
FALSEExact match (not approximate)
IFERROR(..., "Not Found")Graceful error handling

Common Variations

Variation 1: Case-Sensitive VLOOKUP

VLOOKUP is case-insensitive by default. For case-sensitive:

=INDEX(B:B, MATCH(TRUE, EXACT(A:A, E2), 0))

Variation 2: Wildcard VLOOKUP

Find partial matches:

=VLOOKUP("*"&A2&"*", Data!A:C, 2, FALSE)

The asterisks match any characters before/after your search term.

Variation 3: Multiple Criteria VLOOKUP

Create a helper column concatenating your criteria:

=VLOOKUP(A2&B2, Data!D:F, 2, FALSE)

Where column D in Data contains concatenated criteria.

Pro Tips

  • Test with known values: Before trusting a VLOOKUP, test it with a value you can manually verify
  • Check your #N/A errors: Each one is telling you something—investigate before hiding with IFERROR
  • Consider XLOOKUP: If you have Excel 365 or 2021, XLOOKUP fixes most of these issues by design
  • Document complex lookups: Add a comment explaining what the formula does

Troubleshooting Checklist

When your VLOOKUP isn't working, check:

CheckHowFix
Exact match?Is 4th argument FALSE?Change to FALSE
Hidden spaces?Use LEN() to checkUse TRIM()
Same data type?Use ISNUMBER()Convert with VALUE() or TEXT()
Correct lookup column?Is lookup value in column 1 of range?Adjust range or use INDEX-MATCH
Column number correct?Count columns manuallyUse MATCH() for column
Data sorted?Only matters if using TRUEUse FALSE instead

When to Abandon VLOOKUP

Consider switching to INDEX-MATCH or XLOOKUP when:

  • You need to look left (VLOOKUP can only return columns to the right)
  • Column positions change frequently
  • You need multiple criteria matching
  • You're working with very large datasets (INDEX-MATCH is faster)
  • You have Excel 365/2021 (XLOOKUP is simply better)

Conclusion

VLOOKUP isn't broken—it's just misunderstood. The function works exactly as designed; the problem is that its design has quirks that catch users off guard. By understanding these common mistakes, you can write VLOOKUPs that work reliably every time.

Remember: FALSE for exact match, TRIM for clean data, MATCH for dynamic columns, and IFERROR for graceful failures. Master these principles, and VLOOKUP will become a trustworthy tool instead of a source of frustration.

Now go fix those broken VLOOKUPs!

Sponsored Content

Interested in advertising? Reach automation professionals through our platform.

Share this article