When
you need to find and extract a column of data from one table and place
it in another, use the VLOOKUP function. This function works in any
version of Excel in Windows and Mac, and also in Google Sheets. It
allows you to find data in one table using some identifier it has in
common with another table. The two tables can be on different sheets or
even on different workbooks. There is also an HLOOKUP function, which
does the same thing, but with data arranged horizontally, across rows.
The MATCH and INDEX functions are good to use when you’re concerned with the location of specific data, such as the column or row that contains a person’s name.
The MATCH and INDEX functions are good to use when you’re concerned with the location of specific data, such as the column or row that contains a person’s name.
Screencast
If you want to follow along with this tutorial using your own Excel file, you can do so. Or if you prefer, download the zip file included for this tutorial, which contains a sample workbook called vlookup example.xlsx.
Using VLOOKUP
When VLOOKUP finds the identifier that you specify in the source data, it can then find any cell in that row and return the information to you. Note that in the source data, the identifier must be in the first column of the table.Syntax
The syntax of the VLOOKUP function is:=VLOOKUP(lookup value, table range, column number, [true/false])
Here’s what these arguments mean:
- Lookup value. The cell that has the unique identifier.
- Table range. The range of cells that has the identifier in the first column, followed by the rest of the data in the other columns.
- Column number. The number of the column that has the data you’re looking for. Don’t get that confused with the column’s letter. In the above illustration, the states are in column 4.
- True/False. This argument is optional. True means that an approximate match is acceptable, and False means that only an exact match is acceptable.
Define a Range Name to Create an Absolute Reference
In Vlookup example.xlsx, look at the Sales Amounts worksheet. We’ll enter the formula in B5, then use the AutoFill feature to copy the formula down the sheet. That means the table range in the formula has to be an absolute reference. A good way to do that is to define a name for the table range.Defining a Range Name in Excel
- Before entering the formula, go to the source data worksheet.
- Select all the cells from A4 (header for the Order # column) down through H203. A quick way of doing it is to click A4, then press Ctrl-Shift-End (Command-Shift-End on the Mac).
- Click inside the Name Box above column A (the Name Box now displays A4).
- Type data, then press Enter.
- You can now use the name data in the formula instead of $A$4:$H$203.
Defining a Range name in Google Sheets
In Google Sheets, defining a name is a little different.- Click the first column header of your source data, then press Ctrl-Shift-Right Arrow (Command-Shift-Right Arrow on the Mac). That selects the row of column headers.
- Press Ctrl-Shift-Down Arrow (Command-Shift-Down Arrow on the Mac). That selects the actual data.
- Click the Data menu, then select Named and protected ranges.
- In the Name and protected ranges box on the right, type data, then click Done.
Entering the Formula
To enter the formula, go to the Sales Amounts worksheet and click in B5.Enter the formula:
=VLOOKUP(A5,data,8,FALSE)
Press Enter.
The result should be 40. To fill in the values down the column, click back on B5, if necessary. Put the mouse pointer on the AutoFill dot in the cell’s lower-right corner, so the mouse pointer becomes a cross hair.
Double-click to fill the values down the column.
If you want, you can run the VLOOKUP function in the next few columns to extract other fields, like last name or state.
Using MATCH
The MATCH function is doesn’t return the value of data to you; you provide the value that you’re looking for, and the function returns the position of that value. It’s like asking where is #135 Main Street, and getting the answer that it’s the 4th building down the street.Syntax
The syntax of the MATCH function is:=MATCH(lookup value, table range, [match type])
The arguments are:
- Lookup value. The cell that has the unique identifier.
- Table range. The range of cells you’re searching.
- Match type. Optional. It’s how you specify how close of a match you want, as follows:
Next highest value |
-1
|
Values must be in descending order. |
Target value |
0
|
Values can be in any order. |
Next lowest value |
1
|
Default type. Values must be in ascending order. |
Go to the Match tab of the worksheet. In B5, enter the MATCH function:
=MATCH(A5,order_number,1)
If you didn’t define a range name, you’d write the function as:
=MATCH(A5,'Source
Data'!A5:A203,0)
Either way, you can see that this is in the 14th position (making it the 13th order).
Using INDEX
The INDEX function is the opposite of the MATCH function and is similar to VLOOKUP. You tell the function what row and column of the data you want, and it tells you the value of what’s in the cell.Syntax
The syntax of the INDEX function is:=INDEX(data range, row number, [column number])
The arguments are:
- Data range. Just like the other two functions, this is the table of data.
- Row number. The row number of the data, which is not necessarily the row of the worksheet. If the table range starts on row 10 of the sheet, then that’s row #1.
- Column number. The column number of the data range. If the range starts on column E, that’s column #1.
Go to the Index sheet of the workbook and click in C6. We first want to find what’s contained in row 9, column 3 of the table. In the formula, we’ll use the range name that we created earlier.
Enter the formula:
=INDEX(data,A6,B6)
It returns a customer’s last name: Strevell. Change the values of A6 and B6, and the result in C6 will show different results (note that many rows have the same states and product names).