Important notice for users of Office 2003 To continue receiving security updates for Office, make sure you're running Office 2003 Service Pack 3 (SP3). The support for Office 2003 ends April 8, 2014. If you’re running Office 2003 after support ends, to receive all important security updates for Office, you need to upgrade to a later version such as Office 365 or Office 2013. For more information, see Support is ending for Office 2003.
Searches for a value in the first column of a table array and returns a value in the same row from another column in the table array.
The V in VLOOKUP stands for vertical. Use VLOOKUP instead of HLOOKUP when your comparison values are located in a column to the left of the data that you want to find.
Syntax
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value The value to search in the first column of the table array (array: Used to build single formulas that produce multiple results or that operate on a group of arguments that are arranged in rows and columns. An array range shares a common formula; an array constant is a group of constants used as an argument.). Lookup_value can be a value or a reference. If lookup_value is smaller than the smallest value in the first column of table_array, VLOOKUP returns the #N/A error value.
Table_array Two or more columns of data. Use a reference to a range or a range name. The values in the first column of table_array are the values searched by lookup_value. These values can be text, numbers, or logical values. Uppercase and lowercase text are equivalent.
Col_index_num The column number in table_array from which the matching value must be returned. A col_index_num of 1 returns the value in the first column in table_array; a col_index_num of 2 returns the value in the second column in table_array, and so on. If col_index_num is:
 Less than 1, VLOOKUP returns the #VALUE! error value.
 Greater than the number of columns in table_array, VLOOKUP returns the #REF! error value.
Range_lookup A logical value that specifies whether you want VLOOKUP to find an exact match or an approximate match:
 If TRUE or omitted, an exact or approximate match is returned. If an exact match is not found, the next largest value that is less than lookup_value is returned.
The values in the first column of table_array must be placed in ascending sort order; otherwise, VLOOKUP may not give the correct value. You can put the values in ascending order by choosing the Sort command from the Data menu and selecting Ascending. For more information, see Default sort orders.
 If FALSE, VLOOKUP will only find an exact match. In this case, the values in the first column of table_array do not need to be sorted. If there are two or more values in the first column of table_array that match the lookup_value, the first value found is used. If an exact match is not found, the error value #N/A is returned.
Remarks
 When searching text values in the first column of table_array, ensure that the data in the first column of table_array does not have leading spaces, trailing spaces, inconsistent use of straight ( ' or " ) and curly ( ‘ or “) quotation marks, or nonprinting characters. In these cases, VLOOKUP may give an incorrect or unexpected value. For more information on functions that you can use to clean text data, see Text and Data functions.
 When searching number or date values, ensure that the data in the first column of table_array is not stored as text values. In this case, VLOOKUP may give an incorrect or unexpected value. For more information, see Convert numbers stored as text to numbers.
 If range_lookup is FALSE and lookup_value is text, then you can use the wildcard characters, 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 (~) preceding the character.
Example 1
The example may be easier to understand if you copy it to a blank worksheet.
How to copy an example
 Create a blank workbook or worksheet.
 Select the example in the Help topic.
Note Do not select the row or column headers.
Selecting an example from Help
 Press CTRL+C.
 In the worksheet, select cell A1, and press CTRL+V.
 To switch between viewing the results and viewing the formulas that return the results, press CTRL+` (grave accent), or on the Tools menu, point to Formula Auditing, and then click Formula Auditing Mode.
This example searches the Density column of an atmospheric properties table to find corresponding values in the Viscosity and Temperature columns. (The values are for air at 0 degrees Celsius at sea level, or 1 atmosphere.)

A 
B 
C 
Density 
Viscosity 
Temperature 
0.457 
3.55 
500 
0.525 
3.25 
400 
0.616 
2.93 
300 
0.675 
2.75 
250 
0.746 
2.57 
200 
0.835 
2.38 
150 
0.946 
2.17 
100 
1.09 
1.95 
50 
1.29 
1.71 
0 
Formula 
Description (result) 

=VLOOKUP(1,A2:C10,2) 
Using an approximate match, searches for the value 1 in column A, finds the largest value less than or equal to 1 in column A which is 0.946, and then returns the value from column B in the same row. (2.17) 

=VLOOKUP(1,A2:C10,3,TRUE) 
Using an approximate match, searches for the value 1 in column A, finds the largest value less than or equal to 1 in column A, which is 0.946, and then returns the value from column C in the same row. (100) 

=VLOOKUP(.7,A2:C10,3,FALSE) 
Using an exact match, searches for the value .7 in column A. Because there is no exact match in column A, an error is returned. (#N/A) 

=VLOOKUP(0.1,A2:C10,2,TRUE) 
Using an approximate match, searches for the value 0.1 in column A. Because 0.1 is less than the smallest value in column A, an error is returned. (#N/A) 

=VLOOKUP(2,A2:C10,2,TRUE) 
Using an approximate match, searches for the value 2 in column A, finds the largest value less than or equal to 2 in column A, which is 1.29, and then returns the value from column B in the same row. (1.71) 


Example 2
The example may be easier to understand if you copy it to a blank worksheet.
How to copy an example
 Create a blank workbook or worksheet.
 Select the example in the Help topic.
Note Do not select the row or column headers.
Selecting an example from Help
 Press CTRL+C.
 In the worksheet, select cell A1, and press CTRL+V.
 To switch between viewing the results and viewing the formulas that return the results, press CTRL+` (grave accent), or on the Tools menu, point to Formula Auditing, and then click Formula Auditing Mode.
This example searches the ItemID column of a baby products table and matches values in the Cost and Markup columns to calculate prices and test conditions.

A 
B 
C 
D 
ItemID 
Item 
Cost 
Markup 
ST340 
Stroller 
$145.67 
30% 
BI567 
Bib 
$3.56 
40% 
DI328 
Diapers 
$21.45 
35% 
WI989 
Wipes 
$5.12 
40% 
AS469 
Aspirator 
$2.56 
45% 
Formula 
Description (result) 


= VLOOKUP("DI328", A2:D6, 3, FALSE) * (1 + VLOOKUP("DI328", A2:D6, 4, FALSE)) 
Calculates the retail price of diapers by adding the markup percentage to the cost. ($28.96) 


= (VLOOKUP("WI989", A2:D6, 3, FALSE) * (1 + VLOOKUP("WI989", A2:D6, 4, FALSE))) * (1  20%) 
Calculates the sale price of wipes by subtracting a specified discount from the retail price. ($5.73) 


= IF(VLOOKUP(A2, A2:D6, 3, FALSE) >= 20, "Markup is " & 100 * VLOOKUP(A2, A2:D6, 4, FALSE) &"%", "Cost is under $20.00") 
If the cost of an item is greater than or equal to $20.00, displays the string "Markup is nn%"; otherwise, displays the string "Cost is under $20.00". (Markup is 30%) 


= IF(VLOOKUP(A3, A2:D6, 3, FALSE) >= 20, "Markup is: " & 100 * VLOOKUP(A3, A2:D6, 4, FALSE) &"%", "Cost is $" & VLOOKUP(A3, A2:D6, 3, FALSE)) 
If the cost of an item is greater than or equal to $20.00, displays the string Markup is nn%"; otherwise, displays the string "Cost is $n.nn". (Cost is $3.56) 



Example 3
The example may be easier to understand if you copy it to a blank worksheet.
How to copy an example
 Create a blank workbook or worksheet.
 Select the example in the Help topic.
Note Do not select the row or column headers.
Selecting an example from Help
 Press CTRL+C.
 In the worksheet, select cell A1, and press CTRL+V.
 To switch between viewing the results and viewing the formulas that return the results, press CTRL+` (grave accent), or on the Tools menu, point to Formula Auditing, and then click Formula Auditing Mode.
This example searches the ID column of an employee table and matches values in other columns to calculate ages and test for error conditions.

A 
B 
C 
D 
E 
ID 
Last name 
First name 
Title 
Birth date 
1 
Davolio 
Nancy 
Sales Representative 
12/8/1968 
2 
Fuller 
Andrew 
Vice President, Sales 
2/19/1952 
3 
Leverling 
Janet 
Sales Representative 
8/30/1963 
4 
Peacock 
Margaret 
Sales Representative 
9/19/1958 
5 
Buchanan 
Steven 
Sales Manager 
3/4/1955 
6 
Suyama 
Michael 
Sales Representative 
7/2/1963 
Formula 
Description (result) 



=INT(YEARFRAC(DATE(2004,6,30), VLOOKUP(5,A2:E7,5, FALSE), 1)) 
For the fiscal year 2004, finds the age of the employee with ID equal to 5. Uses the YEARFRAC function to subtract the birth date from the fiscal year end date and displays the result as an integer using the INT function. (49) 



=IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "Employee not found", VLOOKUP(5,A2:E7,2,FALSE)) 
If there is an employee with an ID of 5, displays the employee's last name; otherwise, displays the message "Employee not found". (Buchanan)
The ISNA function returns a TRUE value when the VLOOKUP function returns the #NA error value.




=IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "Employee not found", VLOOKUP(15,A3:E8,2,FALSE)) 
If there is an employee with an ID of 15, displays the employee's last name; otherwise, displays the message "Employee not found". (Employee not found)
The ISNA function returns a TRUE value when the VLOOKUP function returns the #NA error value.




=VLOOKUP(4,A2:E7,3,FALSE) & " " & VLOOKUP(4,A2:E7,2,FALSE) & " is a " & VLOOKUP(4,A2:E7,4,FALSE) & "." 
For the employee with an ID of 4, concatenates the values of three cells into a complete sentence. (Margaret Peacock is a Sales Representative.) 




Note The first formula in the example above uses the YEARFRAC function. If this function is not available, and returns the #NAME? error, install and load the Analysis ToolPak addin.
How?
 On the Tools menu, click AddIns.
 In the AddIns available list, select the Analysis ToolPak box, and then click OK.
 If necessary, follow the instructions in the setup program.