XLOOKUP with Multiple Criteria in Excel (3 Easy Methods)

A normal XLOOKUP finds a value using one condition, like a product ID. But what if you need the price of a product in a specific size, or a sales figure for a specific person in a specific month? Here are three easy ways to use XLOOKUP with multiple criteria.

New to XLOOKUP? Start with XLOOKUP explained.

The example data

A B C
1 Product Size Price
2 T-shirt Small 5.500
3 T-shirt Medium 6.000
4 T-shirt Large 6.500
5 Hoodie Small 12.000
6 Hoodie Medium 13.000
7 Hoodie Large 14.000

Goal: find the price of a Hoodie in size Medium. Put “Hoodie” in F1 and “Medium” in F2.

Method 1: The boolean method (recommended)

=XLOOKUP(1, (A2:A7=F1)*(B2:B7=F2), C2:C7)
Excel XLOOKUP with two criteria returning 13.000
Both conditions must be true: the formula returns 13.000, the price of a Medium Hoodie.

Result: 13.000

How it works:

  1. (A2:A7=F1) checks each row for “Hoodie” → TRUE/FALSE.
  2. (B2:B7=F2) checks each row for “Medium” → TRUE/FALSE.
  3. Multiplying them turns TRUE/FALSE into 1/0. A row only gets 1 when both are TRUE.
  4. XLOOKUP looks for 1 and returns the price from that row.

Add more conditions by multiplying more brackets:

=XLOOKUP(1, (A2:A7=F1)*(B2:B7=F2)*(D2:D7=F3), C2:C7)

Use OR instead of AND by adding with + and looking for a value of at least 1:

=XLOOKUP(TRUE, ((A2:A7="Hoodie")+(A2:A7="Jacket"))>0, C2:C7)

Method 2: Join the columns

=XLOOKUP(F1&F2, A2:A7&B2:B7, C2:C7)

This glues the criteria together (“HoodieMedium”) and searches the glued columns.

Tip: add a separator to avoid accidental matches, for example when “AB”+”C” and “A”+”BC” would both become “ABC”:

=XLOOKUP(F1&"|"&F2, A2:A7&"|"&B2:B7, C2:C7)

It’s simple to read, but it only works for exact text matches. Method 1 also handles conditions like “greater than.”

Method 3: FILTER for multiple results

XLOOKUP returns only the first match. To get all matching rows, use FILTER:

=FILTER(C2:C7, (A2:A7="Hoodie")*(C2:C7>12))

Result: 13.000 and 14.000. Learn more in UNIQUE, SORT and FILTER.

Add a “not found” message

=XLOOKUP(1, (A2:A7=F1)*(B2:B7=F2), C2:C7, "Not available")

Still getting #N/A? Check for extra spaces with TRIM, and see how to fix #N/A.

Criteria with numbers and dates

The boolean method works with any comparison:

=XLOOKUP(1, (B2:B100="Sara")*(A2:A100>=DATE(2026,10,1)), D2:D100)

Finds Sara’s first sale on or after 1 October 2026.

Older Excel: INDEX and MATCH

If you don’t have XLOOKUP (Excel 2019 or older):

=INDEX(C2:C7, MATCH(1, (A2:A7=F1)*(B2:B7=F2), 0))

In Excel 2019 and earlier, confirm it with Ctrl + Shift + Enter. See INDEX and MATCH explained.

Google Sheets

Methods 1 and 2 work in Google Sheets. Use XLOOKUP the same way. If a formula returns a single value instead of checking every row, wrap it in ARRAYFORMULA().

Quick summary

  • Best method: =XLOOKUP(1, (range1=crit1)*(range2=crit2), return_range).
  • Simple text matches: join columns with &.
  • Need every match? Use FILTER.
  • Older Excel: INDEX + MATCH with the same boolean trick.

Related guides

Leave a Comment