Matching on multiple criteria while also referencing a different sheet combines two of XLOOKUP's more advanced patterns into a single formula, and the complexity compounds quickly - every range needs both the correct sheet reference and the correct boundaries, and a mistake in either one produces a formula that looks correct but quietly returns wrong results.
This page shows the combined syntax, flags where it's most likely to go wrong, and shows Turbo Excel Lookup performing the same combined task through its standard interface.












Every range in this formula - both comparison arrays and the return array - needs the same sheet prefix (Orders!) and identical row boundaries (2:5000). If any one range uses a different boundary, even by a single row, the arrays won't align correctly and the formula can return incorrect results without an obvious error.
- Copying the formula to a new sheet without updating the sheet name in every range
- Extending the data range on the Orders sheet without updating the row boundaries in the formula
- Mismatched row boundaries between the two comparison arrays, causing silently misaligned matches
- Renaming the Orders sheet, which requires updating every reference across every formula that uses it
Because of how easily these formulas can drift out of alignment as a sheet grows or gets renamed, they tend to need more maintenance over time than a single-sheet, single-criterion lookup.
Turbo Excel Lookup avoids this class of error entirely because it doesn't require manually keeping several ranges in sync. You import the Orders sheet once as either the Base File or Lookup Table, add Key Column Pairs for each of the criteria columns by name, and the app automatically applies the match across the full extent of whichever sheet you loaded - there's no row boundary to update if the sheet grows, and no risk of one range being off by a row relative to another, since the underlying merge operates on the whole loaded dataset consistently.
Converting the Orders sheet into a proper Excel Table (Insert > Table) before writing this kind of formula changes the range references from fixed row numbers to structured references like Orders[Order ID], which automatically expand as new rows are added. This removes one of the two main maintenance risks described above - the fixed row boundary going stale - while the sheet-naming risk from renaming the sheet still applies, since structured references are tied to the table name rather than the sheet name.
Turbo Excel Lookup sidesteps both risks simultaneously, since it doesn't use row-number or sheet-name references at all - it re-reads whatever file or sheet is loaded at the time a lookup is run, capturing however many rows currently exist.
Given how much can go wrong with a combined multi-criteria, cross-sheet formula, it's worth pausing to consider whether the task might be simpler as a two-step process instead - first filtering or extracting the relevant rows onto a single sheet, then running a more straightforward single-sheet lookup against that extract. This trades one complex formula for a couple of simpler ones, which is often easier to build correctly and to maintain over time.
There's a real trade-off between building one comprehensive formula that handles every requirement at once, and building several simpler formulas or steps that are each easier to verify individually. For anything approaching the complexity described on this page - multiple criteria, cross-sheet references, growing data - leaning toward the simpler, multi-step approach, or a dedicated matching tool, tends to save more time in maintenance than it costs in initial setup.
Combining multiple criteria with a cross-sheet reference is one of the more maintenance-heavy formula patterns covered on this site, since every range needs to stay aligned across sheet name, row boundaries, and criteria simultaneously. Simpler, multi-step alternatives are often worth the trade-off in reduced fragility.
Why do all the ranges in this formula need matching row boundaries?
XLOOKUP's array-based comparison relies on each array representing the same set of rows in the same order; mismatched boundaries misalign which row is being compared to which.
What happens if I add new rows to the Orders sheet later?
Any formula with a fixed row boundary, like A2:A5000, won't automatically include rows beyond 5000, so new data added past that point would silently be excluded from the lookup.
Is there a way to make the range boundaries expand automatically?
Using Excel Tables (Insert > Table) with structured references instead of fixed row numbers allows ranges to expand automatically as new rows are added.
Does Turbo Excel Lookup need range boundaries updated as data grows?
No, since it re-reads the full extent of whichever file or sheet you import each time you run a lookup, so newly added rows are included automatically without any formula maintenance.
Do Excel Tables solve the row-boundary problem in multi-criteria formulas?
Yes, structured references from an Excel Table expand automatically as rows are added, removing the need to manually update a fixed row range.
Do Excel Tables also solve the sheet-renaming risk?
Not directly - structured references are tied to the table name, so renaming the underlying sheet doesn't break them, but renaming the table itself would.
Is there a simpler alternative to one large, combined multi-criteria cross-sheet formula?
Often yes - extracting the relevant rows onto a single sheet first, then running a simpler single-sheet, multi-criteria lookup against that extract, can be easier to build and maintain than one large combined formula.
Is it generally better to build one complex formula or several simpler ones?
For anything approaching multi-criteria, cross-sheet complexity, several simpler steps are usually easier to verify and maintain than one comprehensive formula, even though the comprehensive version may seem more efficient upfront.
Ready to stop fighting #N/A errors and match your spreadsheets visually?