Excel lookup formulas: VLOOKUP, HLOOKUP, INDEX, MATCH and CHOOSE

Find any value in a table: when to use VLOOKUP or HLOOKUP, why INDEX + MATCH is more flexible, and how CHOOSE switches between ranges - with simple examples you can copy.

2 min read · Updated 08 Oct 2026 · By Md. Saiful Islam · বাংলায় পড়ুন

Lookup formulas pull information from a table - an operator's grade from a skill list, an operation's SMV from a bulletin, a style's buyer from an order sheet. These five cover almost every case.

Example table (named data):

SerialNameAgeAddressSalary
1Nasir24Dhaka1500
2Zaheer25Dhaka2313
3Ahmed32Sylhet2354
4Shahed27Ctg354

VLOOKUP - search down the first column

=VLOOKUP(lookup_value, table, column_number, FALSE)

=VLOOKUP(3, data, 2, FALSE) → Ahmed (finds 3 in the first column, returns column 2).

  • FALSE = exact match (use this almost always).
  • TRUE = closest smaller value - only for sorted ranges like grade bands.

HLOOKUP - search across the top row

The same idea for tables laid out sideways: it looks in the top row and returns a value from a row you choose.

=HLOOKUP("Salary", data2, B13+1, FALSE) - the example adds 1 to the serial number because the first row of the range is the header.

INDEX - pick by row and column number

=INDEX(data, 3, 5) → 2354 (row 3, column 5).

MATCH - find the position

=MATCH("Shahed", B2:B5, 0) → 4 (Shahed is the 4th item). The 0 means exact match.

INDEX + MATCH - the flexible lookup

=INDEX(E2:E5, MATCH("Zaheer", B2:B5, 0)) → 2313

Why engineers prefer it:

  • the lookup column does not need to be on the left
  • inserting columns does not break it
  • it is faster on big sheets

Tip: In Excel 365, XLOOKUP does the same in one function: =XLOOKUP("Zaheer", B2:B5, E2:E5).

CHOOSE - switch between options by number

=SUM(CHOOSE(C10, G7:G14, H7:H14)) sums G7:G14 when C10 is 1 and H7:H14 when C10 is 2 - handy for a report where the user picks "1 = this month, 2 = last month" from a drop-down.

Garment examples

NeedFormula idea
SMV of an operation from the bulletinVLOOKUP(operation, bulletin, smv_col, FALSE)
Operator grade from IDINDEX(grades, MATCH(id, ids, 0))
Which column holds today's date in an hourly reportMATCH(TODAY(), dates_row, 0)

Get one practical IE tip every week

Join IE and production professionals learning with in2eff.