VLOOKUP is one of the most powerful and most misunderstood functions in Excel and Google Sheets. If you've ever opened a spreadsheet and felt lost when someone asked you to "just VLOOKUP it," this guide is for you. By the end, you'll understand exactly how VLOOKUP works, when to use it, and when to use something better.
What VLOOKUP Actually Does
VLOOKUP stands for "Vertical Lookup." It searches for a value in the first column of a table, then returns a value from another column in the same row. Think of it like looking up a phone number in a phone book — you find the name first, then read across to get the number.
The basic syntax is: =VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
Each part does something specific. The lookup_value is what you're searching for. The table_array is where you're searching. The col_index_num tells Excel which column has your answer. And range_lookup decides whether you want exact or approximate matches.
Your First VLOOKUP: A Simple Example
Imagine you have a list of products in column A and their prices in column B. You want to find the price of "Apple." Here's the formula:
=VLOOKUP("Apple", A2:B100, 2, FALSE)
This searches for "Apple" in column A, looks at the matching row, and returns whatever is in column 2 (which is column B, the price). The FALSE at the end is critical — it means "find an exact match." Always use FALSE unless you have a very specific reason not to.
The Most Common VLOOKUP Mistakes
Even experienced users make these mistakes regularly:
Forgetting FALSE for Exact Match
If you leave off the last argument or set it to TRUE, Excel does an "approximate match" which requires your data to be sorted. If it's not sorted (and most data isn't), you'll get wildly incorrect results that look correct at first glance.
Using Wrong Column Index
The column index is counted from the leftmost column of your table_array, not from column A of your spreadsheet. If your table starts at column D and you want data from column F, the index is 3 (not 6).
Not Locking Cell References
When you copy a VLOOKUP formula down a column, the table_array reference shifts. Use absolute references like $A$2:$B$100 to keep it locked in place.
When VLOOKUP Isn't the Right Tool
VLOOKUP has one major limitation: it can only search the leftmost column. If your "lookup value" is in column C and you want a result from column A, VLOOKUP won't help. You'll either need to rearrange your data or use INDEX/MATCH or XLOOKUP instead.
The Modern Alternative: XLOOKUP
If you have Excel 2021 or Microsoft 365, you have access to XLOOKUP — which is essentially VLOOKUP without the limitations. It can search any column, return any column, and handles errors more gracefully. Syntax: =XLOOKUP(lookup_value, lookup_array, return_array).
For Google Sheets users, XLOOKUP is also available and works identically.
Real-World VLOOKUP Examples
Employee Lookup
Find an employee's department from their ID: =VLOOKUP(A2, Employees!A:D, 4, FALSE)
Price List
Look up product prices in an order form: =VLOOKUP(B2, PriceList!A:C, 3, FALSE)
Translating Codes
Convert region codes to region names: =VLOOKUP(D2, RegionTable, 2, FALSE)
Pro Tips for Cleaner VLOOKUPs
Wrap your VLOOKUP in IFERROR to handle missing values gracefully: =IFERROR(VLOOKUP(A2, B:C, 2, FALSE), "Not found"). This way instead of seeing #N/A errors, you get a clear message.
Use named ranges to make formulas easier to read. Instead of VLOOKUP(A2, B$2:D$100, 3, FALSE), define "Products" as your range and write VLOOKUP(A2, Products, 3, FALSE).
Key Takeaways
- Always use FALSE for exact matches
- The column index counts from your table's first column, not column A
- Use absolute references when copying formulas
- Wrap with IFERROR to handle missing data
- Consider XLOOKUP if available — it's simply better
VLOOKUP is a fundamental skill for anyone working with spreadsheets. Master it, and you'll save hours every week. Need help building a specific VLOOKUP formula? Try our free formula generator — describe what you want in plain English and we'll build it for you instantly.