Explanation

This is a standard “exact match” VLOOKUP formula with one exception: the column index is calculated using the COLUMN function. When the COLUMN function is used without any arguments, it returns a number that corresponds to the current column.

In this case, the first instance of the formula in column E returns 5, since column E is the 5th column in the worksheet. We don’t actually want to retrieve data from the 5th column of the customer table (there are only 3 columns total) so we need to subtract 3 from 5 to get the number 2, which is used to retrieve Name from customer data:

COLUMN()-3 = 2 // column E

When the formula is copied across to column F, the same formula yields the number 3:

COLUMN()-3 = 3 // column F

As a result, the first instance gets Name from the customer table (column 2), and the 2nd instance gets State from the customer table (column 3).

You can use this same approach to write one VLOOKUP formula that you can copy across many columns to retrieve values from consecutive columns in another table.

With two-way match

Another way to calculate a column index for VLOOKUP is to do a two-way VLOOKUP using the MATCH function . With this approach, the MATCH function is used to figure out the column index needed for a given column in the second table.

Explanation

The core of this formula is INDEX, which is retrieving a value from the named range “amount” (B5:B13):

=INDEX(amount,row_num)

where row_num is worked out with the MATCH function and some boolean logic :

MATCH(1,($F5=location)*(G$4=date),0)

In this snippet, the location in F5 is compared with all locations, and the date in G4 is compared with all dates. The result in each case is an array of TRUE and FALSE values. When these arrays are multiplied together, the math operation coerces the TRUE and FALSE values to one’s and zeros, so that the lookup array going into MATCH looks like this:

{1;0;0;0;0;0;0;0;0}

MATCH is set up to match 1 as an exact match, and returns the position to INDEX as a row number. The number 1 works for the lookup value because the array now contains only 1’s and 0’s, as shown above.

F5 and G4 are entered as mixed references so that the formula can be copied through the table without modification.

Transpose with paste special

If you just need to transpose a table one time, don’t forget you can use paste special .