Explanation

One of the nice benefits of XLOOKUP is it can easily return entire rows or columns as a lookup result. This can be done also with INDEX and MATCH , but the syntax is more complex.

In the example shown, we want to retrieve all values associated with Q3. The formula in H5 is:

=XLOOKUP(H4,C4:F4,C5:F8)
  • The lookup_value comes from cell H4, which contains “Q3”
  • The lookup_array is the range C4:F4, which quarters in a header
  • The return_array is C5:F8, which contains all data
  • The match_mode is not provided and defaults to 0 (exact match)
  • The search_mode is not provided and defaults to 1 (first to last)

XLOOKUP finds “Q3” as the second item in C4:F4 and returns the second column of the return_array , the range E5:E8.

Lookup row

In the example shown, XLOOKUP is also used to lookup a row. The formula in C10 is:

=XLOOKUP(B10,B5:B8,C5:F8)
  • The lookup_value comes from cell B10, which contains “Central”
  • The lookup_array is the range B5:B8, which lists regions
  • The return_array is C5:F8, which contains all data
  • The match_mode is not provided and defaults to 0 (exact match)
  • The search_mode is not provided and defaults to 1 (first to last)

XLOOKUP finds “Central” as the third item in B5:B8 and returns the third row of the return_array , the range C7:F7.

Further processing with other functions

The results delivered by XLOOKUP can be handed off to other functions for further processing. For example, to add up all Q3 numbers, you can use the SUM function like this:

=SUM(XLOOKUP("Q3",C4:F4,C5:F8)) // sum Q3

which returns a single result, 503,250.

Dynamic Array Formulas are available in Office 365 only.

Explanation

The XLOOKUP function contains built-in support for wildcards, but this feature must be enabled explicitly by setting match mode to the number 2.

In the example shown, XLOOKUP is configured to match the value entered in cell E5, which may appear anywhere in the lookup values in B5:B15. The formula in F5 is:

=XLOOKUP("*"&E5&"*",code,quantity,"no match",2) // returns 50
  • lookup_value - E5, with asterisks (*) concatenated front and back
  • lookup_array - the named range code (B5:B15)
  • return_array - the named range quantity (C5:C15)
  • if_not_found - the string “no match”
  • match_mode - provided as 2 (wildcard match)
  • search_mode - not provided. Defaults to 1 (first to last)

To make a “contains” type match automatic, the wildcard asterisk (*) is both prepended and appended to the value in cell E5 with concatenation :

"*"&E5&"*"

After concatenation, the formula becomes:

=XLOOKUP("*BCC*",code,quantity,"no match",2)

XLOOKUP locates the first match that contains “BCC” (050-BCC-123 in row 10) and returns the corresponding value from the return array, 50.

Note that XLOOKUP is not case-sensitive, entering “bcc” in E5 will return the same result:

=XLOOKUP("*bcc*",code,quantity,"no match",2) // returns 50

See below for an option to configure XLOOKUP for a case-sensitive match.

VLOOKUP option

The VLOOKUP formula also supports wildcards when set to exact match. The equivalent VLOOKUP formula for this example is:

=VLOOKUP("*"&E5&"*",B5:C15,2,0)

Full explanation here .

With SEARCH and FIND

It is also possible to use the SEARCH and FIND functions to perform a “contains” type match with XLOOKUP. For a case-insensitive match (like the example above), you can use SEARCH like this:

=XLOOKUP(1,--ISNUMBER(SEARCH("BCC",code)),quantity,"no match",2)
=XLOOKUP(1,--ISNUMBER(FIND("BCC",code)),quantity,"no match",2)

Both options above make it easier to extend criteria to include other conditions using boolean logic .

The logic for ISNUMBER + SEARCH is explained here .

Multiple matches

If you need multiple matches, see the FILTER function .

Dynamic Array Formulas are available in Office 365 only.