Excel
Formulas and functions
Reference
Reference
VLOOKUP function
Applies To
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2016
Tip:Try using the new XLOOKUP function, an improved version of VLOOKUP that works in any direction and returns exact matches by default, making it easier and more convenient to use than its predecessor.
Use VLOOKUP when you need to find things in a table or a range by row. For example, look up a price of an automotive part by the part number, or find an employee name based on their employee ID.
In its simplest form, the VLOOKUP function says:
=VLOOKUP(What you want to look up, where you want to look for it, the column number in the range containing the value to return, return an Approximate or Exact match – indicated as 1/TRUE, or 0/FALSE).
Tips:
-
The secret to VLOOKUP is to organize your data so that the value you look up (Fruit) is to the left of the return value (Amount) you want to find.
-
If you're a MicrosoftCopilotsubscriber Copilot can make it even easier to insert and use VLookup or XLookup functions. See Copilot makes lookups in Excel easy.
Use the VLOOKUP function to look up a value in a table.
Syntax
VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
For example:
-
=VLOOKUP(A2,A10:C20,2,TRUE)
-
=VLOOKUP("Fontana",B2:E7,2,FALSE)
-
=VLOOKUP(A2,’Client Details’!A:F,3,FALSE)
Argument name | Description |
---|---|
lookup_value (required) | The value you want to look up. The value you want to look up must be in the first column of the range of cells you specify in thetable_array argument. For example, if table-array spans cells B2:D7, then your lookup_value must be in column B. Lookup_value can be a value or a reference to a cell. |
table_array (required) | The range of cells in which the VLOOKUP will search for the lookup_value and the return value. You can use a named range or a table, and you can use names in the argument instead of cell references. The first column in the cell range must contain the lookup_value. The cell range also needs to include the return value you want to find. Learn how to select ranges in a worksheet. |
col_index_num (required) | The column number (starting with 1 for the left-most column of table_array) that contains the return value. |
range_lookup(optional) | A logical value that specifies whether you want VLOOKUP to find an approximate or an exact match:
|
How to get started
There are four pieces of information that you will need in order to build the VLOOKUP syntax:
-
The value you want to look up, also called the lookup value.
-
The range where the lookup value is located. Remember that the lookup value should always be in the first column in the range for VLOOKUP to work correctly. For example, if your lookup value is in cell C2 then your range should start with C.
-
The column number in the range that contains the return value. For example, if you specify B2:D11 as the range, you should count B as the first column, C as the second, and so on.
-
Optionally, you can specify TRUE if you want an approximate match or FALSE if you want an exact match of the return value. If you don't specify anything, the default value will always be TRUE or approximate match.
Now put all of the above together as follows:
=VLOOKUP(lookup value, range containing the lookup value, the column number in the range containing the return value, Approximate match (TRUE) or Exact match (FALSE)).
Examples
Here are a few examples of VLOOKUP:
Example 1
Example 2
Example 3
Example 4
Example 5
Problem | What went wrong |
---|---|
Wrong value returned | If range_lookup is TRUE or left out, the first column needs to be sorted alphabetically or numerically. If the first column isn't sorted, the return value might be something you don't expect. Either sort the first column, or use FALSE for an exact match. |
#N/A in cell |
For more information on resolving #N/A errors in VLOOKUP, see How to correct a #N/A error in the VLOOKUP function. |
#REF! in cell | If col_index_num is greater than the number of columns in table-array, you'll get the #REF! error value. For more information on resolving #REF! errors in VLOOKUP, see How to correct a #REF! error. |
#VALUE! in cell | If the table_array is less than 1, you'll get the #VALUE! error value. For more information on resolving #VALUE! errors in VLOOKUP, see How to correct a #VALUE! error in the VLOOKUP function. |
#NAME? in cell | The #NAME? error value usually means that the formula is missing quotes. To look up a person's name, make sure you use quotes around the name in the formula. For example, enter the name as "Fontana" in =VLOOKUP("Fontana",B2:E7,2,FALSE). For more information, see How to correct a #NAME! error. |
#SPILL! in cell | This particular #SPILL! error usually means that your formula is relying on implicit intersection for the lookup value, and using an entire column as a reference. For example, =VLOOKUP(A:A,A:C,2,FALSE). You can resolve the issue by anchoring the lookup reference with the @ operator like this: =VLOOKUP(@A:A,A:C,2,FALSE). Alternatively, you can use the traditional VLOOKUP methodand refer to a single cell instead of an entire column: =VLOOKUP(A2,A:C,2,FALSE). |
Do this | Why |
---|---|
Use absolute references for range_lookup | Using absolute references allows you to fill-down a formula so that it always looks at the same exact lookup range. Learn how to use absolute cell references. |
Don't store number or date values as text. | When searching number or date values, be sure the data in the first column of table_array isn't stored as text values. Otherwise, VLOOKUP might return an incorrect or unexpected value. |
Sort the first column | Sort the first column of the table_array before using VLOOKUP when range_lookup is TRUE. |
Use wildcard characters | If range_lookup is FALSE and lookup_value is text, you can use the wildcard characters—the question mark (?) and asterisk (*)—in lookup_value. A question mark matches any single character. An asterisk matches any sequence of characters. If you want to find an actual question mark or asterisk, type a tilde (~) in front of the character. For example, =VLOOKUP("Fontan?",B2:E7,2,FALSE) will search for all instances of Fontana with a last letter that could vary. |
Make sure your data doesn't contain erroneous characters. | When searching text values in the first column, make sure the data in the first column doesn't have leading spaces, trailing spaces, inconsistent use of straight ( ' or " ) and curly ( ‘ or “) quotation marks, or nonprinting characters. In these cases, VLOOKUP might return an unexpected value. To get accurate results, try using the CLEAN function or the TRIM function to remove trailing spaces after table values in a cell. |
Need more help?
You can always ask an expert in the Excel Tech Communityor get support inCommunities.
See Also
XLOOKUP function
Video: When and how to use VLOOKUP
Quick Reference Card: VLOOKUP refresher
How to correct a #N/A error in the VLOOKUP function
Look up values with VLOOKUP, INDEX, or MATCH
HLOOKUP function
Need more help?
Want more options?
Discover Community
Explore subscription benefits, browse training courses, learn how to secure your device, and more.
Microsoft 365 subscription benefits
Microsoft 365 training
Microsoft security
Accessibility center
Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.