Syntax
| Parameter | Description |
|---|---|
| lookup_value | The value to search for in the first column of the table. Can be a cell reference, text, or number. |
| table_array | The range of cells that contains the data. The first column is searched for lookup_value. |
| col_index | The column number in table_array from which to return a value. 1 = first column, 2 = second, etc. |
| [range_lookup] | Optional. FALSE for exact match (recommended), TRUE or omitted for approximate match. Almost always use FALSE. |
Examples
Suppose you have a table of employees with their department and salary:
| A | B | C | |
|---|---|---|---|
| 1 | Name | Department | Salary |
| 2 | Alice | Engineering | 95,000 |
| 3 | Bob | Marketing | 72,000 |
| 4 | Carol | Engineering | 105,000 |
| 5 | Dave | Sales | 68,000 |
Find Bob's salary
=VLOOKUP("Bob", A1:C5, 3, FALSE)
Find Carol's department
=VLOOKUP("Carol", A1:C5, 2, FALSE)
Dynamic lookup from a cell
=VLOOKUP(E1, A1:C5, 3, FALSE)
Common Errors
The lookup value wasn't found. Check for extra spaces, typos, or mismatched data types (text vs. number). Use =IFNA(VLOOKUP(...), "Not found") to handle this gracefully.
The col_index is larger than the number of columns in table_array. If your table has 3 columns, col_index must be 1, 2, or 3.
Tips
Set range_lookup to FALSE for exact matching. The default (TRUE) does approximate matching, which requires sorted data and is rarely what you want.
VLOOKUP always searches the first column and returns a column to the right. If you need to search right and return left, use INDEX + MATCH instead.
VLOOKUP is not case-sensitive. "bob", "Bob", and "BOB" all match the same value.
Try VLOOKUP in Viztab
Import your data and use VLOOKUP with 370+ other formulas. No signup required.
Open Viztab