Hlookup
What Does It Do?
This function scans across the column headings at the top of a table to find a specified item. When the item is found, it then scans down the column to pick a cell entry.
Syntax
=HLOOKUP(ItemToFind, RangeToLookIn, RowToPickFrom, SortedOrUnsorted)
The ItemToFind is a single item specified by the user. The RangeToLookIn is the range of data with the column headings at the top. The RowToPickFrom is how far down the column the function should look to pick from. The Sorted/Unsorted is whether the column headings are sorted. TRUE for yes, FALSE for no.
Formatting
No special formatting is needed.
Jan | Feb | Mar | row 1 | The row numbers are not needed. |
10 | 80 | 97 | row 2 | they are part of the illustration. |
20 | 90 | 69 | row 3 | |
30 | 100 | 45 | row 4 | |
40 | 110 | 51 | row 5 | |
50 | 120 | 77 | row 6 |
Type a month to look for : | Feb |
Which row needs to be picked out : | 4 |
The result is : | 100 | =HLOOKUP(F10,D3:F10,F11,FALSE) |
Example 1:
This table is used to find a value based on a specified month and name. The =HLOOKUP() is used to scan across to find the month. The problem arises when we need to scan down to find the row adjacent to the name. To solve the problem the =MATCH() function is used.
The =MATCH() looks through the list of names to find the name we require. It then calculates the position of the name in the list. Unfortunately, because the list of names is not as deep as the lookup range, the =MATCH() number is 1 less than we require, so and extra 1 is added to compensate.
The =HLOOKUP() now uses this =MATCH() number to look down the month column and picks out the correct cell entry.
The =HLOOKUP() uses FALSE at the end of the function to indicate to Excel that the column headings are not sorted, even though to us the order of Jan,Feb,Mar is correct. If they were sorted alphabetically they would have read as Feb,Jan,Mar.
Jan | Feb | Mar | |
Bob | 10 | 80 | 97 |
Eric | 20 | 90 | 69 |
Alan | 30 | 100 | 45 |
Carol | 40 | 110 | 51 |
David | 50 | 120 | 77 |
Type a month to look for : | feb |
Type a name to look for : | alan |
The result is : | 100 |
=HLOOKUP(F54,D47:F54, MATCH(F55,C48:C52,0)+1,FALSE) |
Example 2:
This example shows how the =HLOOKUP() is used to pick the cost of a spare part for different makes of cars. The =HLOOKUP() scans the column headings for the make of car specified in column B. When the make is found, the =HLOOKUP() then looks down the column to the row specified by the =MATCH() function, which scans the list of spares for the item specified in column C.
The function uses the absolute ranges indicated by the dollar symbol $. This ensures that when the formula is copied to more cells, the ranges for =HLOOKUP() and =MATCH() do not change.
Maker | Spare | Cost |
Vauxhall | Ignition | £50 |
VW | GearBox | £600 |
Ford | Engine | £1,200 |
VW | Steering | £275 |
Ford | Ignition | £70 |
Ford | CYHead | £290 |
Vauxhall | GearBox | £500 |
Ford | Engine | £1,200 |
=HLOOKUP(B79,G72:I77, MATCH(C79,F73:F77,0)+1, FALSE) |
Vauxhall | Ford | VW | |
GearBox | 500 | 450 | 600 |
Engine | 1000 | 1200 | 800 |
Steering | 250 | 350 | 275 |
Ignition | 50 | 70 | 45 |
CYHead | 300 | 290 | 310 |
In the following example a builders merchant is offering discount on large orders. The Unit Cost Table holds the cost of 1 unit of Brick, Wood and Glass. The Discount Table holds the various discounts for different quantities of each product.
The Orders Table is used to enter the orders and calculate the Total.
All the calculations take place in the Orders Table. The name of the Item is typed in column C.
The Unit Cost of the item is then looked up in the Unit Cost Table. The FALSE option has been used at the end of the function to indicate that the product names across the top of the Unit Cost Table are not sorted. Using the FALSE option forces the function to search for an exact match. If a match is not found, the function will produce an error. =HLOOKUP(C127,E111:G112,2,FALSE)
The discount is then looked up in the Discount Table If the Quantity Ordered matches a value at the top of the Discount Table the =HLOOKUP will look down the column to find the correct discount. The TRUE option has been used at the end of the function to indicate that the values across the top of the Discount Table are sorted. Using TRUE will allow the function to make an approximate match. If the Quantity Ordered does not match a value at the top of the Discount Table, the next lowest value is used. Trying to match an order of 125 will drop down to 100, and the discount from
the 100 column is used.
=HLOOKUP(D127,E115:G118, MATCH(C127,D116:D118,0)+1, TRUE)
Unit Cost Table | ||
Brick | Wood | Glass |
£2 | £1 | £3 |
Discount Table | |||
1 | 100 | 300 | |
Brick | 0% | 6% | 8% |
Wood | 0% | 3% | 5% |
Glass | 0% | 12% | 15% |
Orders Table | ||||
Item | Units | Unit Cost | Discount | Total |
Brick | 100 | £2 | 6% | £188 |
Wood | 200 | £1 | 3% | £194 |
Glass | 150 | £3 | 12% | £396 |
Brick | 225 | £2 | 6% | £423 |
Wood | 50 | £1 | 0% | £50 |
Glass | 500 | £3 | 15% | £1,275 |
Unit Cost =HLOOKUP(C127, E111:G112,2, FALSE)
Discount =HLOOKUP(D127, E115:G118, MATCH(C127,D116:D118,0)+1, TRUE)