Excel & Sheets

VLOOKUP How It Works: A Plain-English Explanation With Examples

VLOOKUP is the most-used lookup function in spreadsheets. Most people memorize the syntax without understanding the logic. Once you see how it actually works, you will never forget it.

⏱ 7 min read ✅ Works in Excel & Google Sheets 📅 Updated May 2026
Excel spreadsheet showing a VLOOKUP formula with highlighted lookup column and result cell
Quick Answer

VLOOKUP scans down the first column of a range until it finds your value, then moves right by a set number of columns and returns what's there. The syntax is =VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup]). Always use FALSE as the 4th argument for exact matching. The most common error is #N/A — it means VLOOKUP could not find the value in your lookup column.

In this article
  1. The concept in one sentence
  2. Syntax breakdown: all 4 arguments
  3. Step-by-step walkthrough
  4. Exact match vs. approximate match
  5. Common errors and how to fix them
  6. VLOOKUP limitations to know
  7. FAQ

VLOOKUP in One Sentence

VLOOKUP answers one question: "Find this value in column A — then tell me what's in column C of the same row."

That's it. Everything else is just controlling how it searches and what it returns.

The V stands for vertical. It searches down a column. (HLOOKUP searches across a row — the H stands for horizontal.)

Think of it like a phone book. You scan down the names column (the lookup column) until you find the name you want. Then you move right to find the phone number. VLOOKUP does that automatically — in milliseconds — across thousands of rows.

Why VLOOKUP Still Matters in 2026

XLOOKUP is the newer, more powerful alternative. But millions of spreadsheets still use VLOOKUP, many companies run on Excel versions that don't have XLOOKUP, and understanding VLOOKUP makes XLOOKUP trivial to learn. Start here.

The 4 VLOOKUP Arguments — Explained

VLOOKUP Syntax
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
ArgumentWhat It MeansExample
lookup_value The value you are searching for. Can be a cell reference, a number, or text in quotes. A2 or "Smith"
table_array The range containing your data. The first column of this range is always the search column. B2:E100
col_index_num Which column of your range to return. 1 = first column (the search column), 2 = second column, and so on. 3 (returns 3rd column)
range_lookup FALSE = exact match only. TRUE = approximate match (requires sorted data). Default is TRUE — almost always use FALSE. FALSE
The Trap Most Beginners Fall Into

The default for range_lookup is TRUE (approximate match). If you forget to add the 4th argument, VLOOKUP uses approximate match — and silently returns wrong results without any error. Always type FALSE explicitly.

Step-by-Step: VLOOKUP on a Real Example

Imagine this product table starting at cell A1:

A — Product IDB — Product NameC — PriceD — Stock
1001Wireless Mouse$29.99142
1002USB Hub$19.9987
1003Monitor Stand$49.9934
1004Keyboard$79.9956

You want to look up the price of Product ID 1003. Here's the formula:

Goal: return the price for Product ID 1003
=VLOOKUP(1003, A1:D4, 3, FALSE)

What VLOOKUP does:

  1. Scans column A (first column of A1:D4) looking for 1003
  2. Finds 1003 in row 3
  3. Moves right to the 3rd column of the range — that's column C (Price)
  4. Returns $49.99
Lock Your Table Array

When copying a VLOOKUP formula down a column, lock the table_array with dollar signs so it doesn't shift: =VLOOKUP(A2, $B$1:$E$100, 3, FALSE). Without the lock, Excel adjusts the range as you copy and returns wrong results.

Exact Match vs. Approximate Match

Exact Match (FALSE)Approximate Match (TRUE)
What it doesReturns result only if a perfect match is foundReturns largest value ≤ lookup value
Data must be sorted?NoYes — first column must be ascending
Wrong results if unsorted?No (returns #N/A)Yes — silently returns wrong answer
Use forAlmost everything: names, IDs, codesNumeric ranges: tax brackets, grades, tiers
Recommended?✅ Always default to thisOnly for specific range lookups

When approximate match (TRUE) makes sense

One valid use: commission tiers. If sales of $0–$10,000 = 5% commission, $10,001–$25,000 = 8%, $25,001+ = 12%:

Approximate match for tiered commission
=VLOOKUP(B2, $E$2:$F$4, 2, TRUE)

The range E2:E4 must contain 0, 10001, 25001 in ascending order. VLOOKUP finds the largest threshold that doesn't exceed the sales figure and returns the corresponding rate.

Common VLOOKUP Errors and How to Fix Them

#N/A

Value not found in the lookup column. Check for extra spaces (TRIM), mismatched data types (number vs text), or a genuine missing value. Wrap with IFERROR to suppress.

#REF!

The col_index_num is larger than the number of columns in your table_array. If your range is 3 columns wide and you asked for column 5, you get #REF!. Count your columns and adjust.

#VALUE!

col_index_num is less than 1, or a non-numeric value was used where a number is required. Check your 3rd argument.

Wrong result (no error)

Almost always means you forgot FALSE as the 4th argument and got approximate match behavior on unsorted data. Add FALSE and re-check.

Suppress #N/A Cleanly

=IFERROR(VLOOKUP(A2, $B$1:$E$100, 3, FALSE), "Not found") — replace "Not found" with whatever you want displayed when the lookup fails: a dash, a zero, or a blank "".

VLOOKUP Limitations Worth Knowing

Should You Use XLOOKUP Instead?

If you are on Excel 365, Excel 2021, or Google Sheets — yes. XLOOKUP solves every limitation above: it can look left, handles missing values natively, and doesn't break when you insert columns. For new spreadsheets on supported versions, XLOOKUP is the better choice.

Put VLOOKUP to work today.

Open any spreadsheet with two related tables. Try matching them with VLOOKUP — it takes under 2 minutes once you know the four arguments.

Step-by-Step Excel VLOOKUP Guide →

Frequently Asked Questions

VLOOKUP scans down the first column of a defined range until it finds your lookup value. Once it finds a match, it moves right by the number of columns you specified and returns the value in that cell. The V stands for vertical — it always searches down a column, not across a row.
The 4 VLOOKUP arguments are: (1) lookup_value — the value you're searching for; (2) table_array — the range starting with the column to search; (3) col_index_num — which column in the range to return; (4) range_lookup — FALSE for exact match, TRUE for approximate. Always use FALSE unless you're working with sorted numeric ranges like tax brackets.
VLOOKUP returns #N/A when it cannot find the lookup value in the first column of the table array. Common causes: the value doesn't exist, extra spaces in the lookup value or the table, a number stored as text, or a typo. Wrap with IFERROR to handle it gracefully: =IFERROR(VLOOKUP(...), "Not found").
Exact match (FALSE) returns a result only when a perfect match is found — no match returns #N/A. Approximate match (TRUE) finds the largest value less than or equal to the lookup value — it requires the first column sorted ascending. Use FALSE for almost everything. Use TRUE only for numeric range lookups like commission tiers or grade scales.
XLOOKUP is the modern replacement for VLOOKUP in Excel 365, Excel 2021, and Google Sheets. XLOOKUP can search both left and right (VLOOKUP can only look right), handles missing values without IFERROR, and is simpler to write. If your version supports XLOOKUP, prefer it for new formulas.

Related Articles