2014-04-22

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. 

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.

We want to find sales amounts from the table in the
illustration above, so we use these arguments:

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.

As with the VLOOKUP function, you’ll
probably find the MATCH function easier to use if you apply a range name. Go to
the Source Data sheet, select from B4 (column header for order #) to the
bottom, click in the Name box above
column A, and call it order_number.
Note that the values are 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.

Excel’s documentation will tell
you that the column number argument
is optional, but the row number is sort of optional, too. If the table range
has only one row or one column, you don’t have to use the other argument.

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).

Conclusion

The
ability of a worksheet to look at another worksheet and extract data is a great
tool. This way, you can have one sheet that contains all the data you need for
many purposes, then extract what you need for specific instances. 

Show more