XMATCH()
Returns the relative position of a value within a range or array, with more flexible matching than MATCH.
XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])XMATCH searches for a value and returns its position within the array, similar to MATCH, but defaults to an exact match instead of MATCH's default approximate match -- a common source of MATCH errors that XMATCH avoids.
match_mode adds options MATCH doesn't have: 0 for exact match (default), -1 for exact match or the next smaller item, 1 for exact match or the next larger item, and 2 for wildcard matching. search_mode controls the search direction and can perform a binary search on sorted data for better performance on large ranges.
Pair XMATCH with INDEX for two-way lookups, the same pattern used with MATCH, or nest it inside XLOOKUP's match_mode argument in advanced formulas. It requires Excel 365 or Excel 2021 or later.
Arguments
- lookup_value
- The value to search for.
- lookup_array
- The range or array to search.
- match_modeoptional
- 0 = exact match (default), -1 = exact or next smaller, 1 = exact or next larger, 2 = wildcard match.
- search_modeoptional
- 1 = first to last (default), -1 = last to first, 2 = binary search ascending, -2 = binary search descending.
Examples
=XMATCH(40, {10,20,30,40,50})40 is the fourth item in the array.
=XMATCH(35, {10,20,30,40,50}, 1)35 isn't in the array, so match_mode 1 finds the next larger value, 40, at position 4.
XMATCH tricks, tips, and workbook hacks
XMATCH is easier to remember when you learn the small patterns around it: where it fits, what can break it, and how to combine it with neighboring functions.
Use these practical notes as a working checklist before putting the formula into a real report, model, dashboard, tracker, or reusable template.
Quick wins before you trust the result
- Start with the simplest XMATCH formula that answers the question, then add conditions or error handling only when needed.
- Keep input ranges consistent in size, shape, and meaning.
- Test the formula on one row or one small sample before filling it down a large workbook.
- Add a note beside important formulas explaining what business question they answer.
- Pair the formula with related checks so mistakes are easier to spot.
| Trick or hack | Formula pattern | Best use | Watch out |
|---|---|---|---|
| Build the formula in layers | XMATCH(lookup_value, lookup_array, [match_mode], [search_mode]) | When the full formula feels hard to read or debug. | Confirm each argument or nested function before combining everything. |
| Use structured references | =XMATCH(Table1[Column]) | Excel Tables make formulas easier to read and expand automatically. | Rename table columns carefully so formulas remain clear. |
| Protect against bad input | =IFERROR(XMATCH(...),"Check input") | Dashboards and shared templates where users need a readable message. | Do not hide errors until you understand why they happen. |
| Document the expected result | Add a note or nearby label | Reusable workbooks, finance models, templates, and handoff files. | A clever formula without context becomes expensive to maintain. |
| Mistake | What it looks like | Fix |
|---|---|---|
| Using a wider range than intended | The result changes unexpectedly after new rows or helper columns are added. | Use Excel Tables or named ranges to make the intended input explicit. |
| Mixing text, numbers, dates, and blanks | The answer technically works but does not match the business meaning. | Clean and validate the source column before applying the function. |
| Copying a formula with moving references | The first row works; later rows drift into the wrong range. | Use absolute references, structured references, or named ranges where needed. |
| Scenario | Use | Avoid |
|---|---|---|
| You need a quick answer from clean data | XMATCH with the smallest clear range | Overbuilding the formula with unnecessary wrappers |
| The result will appear in a dashboard | Add checks, labels, and readable fallbacks | Leaving raw errors or unexplained blanks for viewers |
| The workbook will grow over time | Excel Tables, named ranges, or structured references | Hard-coded ranges that miss new rows |
| The data comes from another system | Clean inputs before summarizing or transforming | Assuming pasted data has correct types and spacing |
Practice drills
- Write XMATCH once with direct cell references and once with an Excel Table reference.
- Break the formula on purpose, then use the error message to identify which argument failed.
- Create a small before/after example that explains the formula to another learner.
