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:
After concatenation, the formula becomes:
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.
The VLOOKUP formula also supports wildcards when set to exact match. The equivalent VLOOKUP formula for this example is:
Full explanation here.
With SEARCH and FIND
For a case-sensitive match, you can use FIND instead:
The logic for ISNUMBER + SEARCH is explained here.
If you need multiple matches, see the FILTER function.