
You’re using an alternative to XLOOKUP in Google Sheets (like INDEX + MATCH, FILTER, or VLOOKUP), but it’s returning #N/A, #REF!, or wrong results.
This usually happens due to data mismatches, incorrect ranges, or formula logic errors.
This guide shows exactly how to fix it.
Why the Issue Happens
- Lookup and return ranges are misaligned
MATCHnot set to exact match (0)- Data type mismatch (text vs number)
- Hidden spaces or non-printable characters
- Using full column references incorrectly
- Duplicate values causing unexpected results
- Incorrect formula nesting (INDEX/MATCH structure errors)
Step-by-Step Fixes
Step 1: Use Correct INDEX + MATCH Structure
Correct formula:
=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
Example:
=INDEX(B:B, MATCH(A2, A:A, 0))
A2→ value to findA:A→ lookup columnB:B→ return column0→ exact match
If structure is wrong, results will fail.
Step 2: Force Exact Match in MATCH
If you don’t use 0, results can be wrong or inconsistent.
Fix:
MATCH(A2, A:A, 0)
Never use 1 or leave it blank unless data is sorted.
Step 3: Fix #N/A Errors (Value Not Found)
If you get #N/A, the match is failing.
Check:
- Does the value exist in lookup range?
- Is formatting consistent?
Handle safely:
=IFERROR(INDEX(B:B, MATCH(A2, A:A, 0)), "Not Found")
Step 4: Fix Data Type Mismatch
Common issue: numbers stored as text.
Example:
- Lookup value =
101(number) - Table value =
"101"(text)
Fix:
=INDEX(B:B, MATCH(VALUE(A2), A:A, 0))
or:
=INDEX(B:B, MATCH(TEXT(A2,"0"), A:A, 0))
Step 5: Remove Extra Spaces
Hidden spaces break matching.
Fix:
=INDEX(B:B, MATCH(TRIM(A2), A:A, 0))
To clean data:
=ARRAYFORMULA(TRIM(A:A))
Step 6: Ensure Ranges Are Same Size
Mismatch between lookup and return ranges causes errors.
Wrong:
=INDEX(B2:B50, MATCH(A2, A2:A100, 0))
Correct:
=INDEX(B2:B100, MATCH(A2, A2:A100, 0))
Ranges must align.
Step 7: Handle Duplicates Properly
INDEX + MATCH returns the first match only.
If duplicates exist, results may not be what you expect.
Alternative:
=FILTER(B:B, A:A=A2)
Returns all matches.
Step 8: Fix #REF! Errors
This happens when INDEX points outside the range.
Cause:
- MATCH returns a position beyond INDEX range
Fix:
- Ensure both ranges match exactly in size and position
Step 9: Avoid Full Column Overuse (Performance Issues)
Using full columns (A:A, B:B) on large datasets can slow Sheets and cause inconsistencies.
Better:
=INDEX(B2:B1000, MATCH(A2, A2:A1000, 0))
Step 10: Use FILTER as a More Flexible Alternative
Instead of INDEX + MATCH:
=FILTER(B:B, A:A=A2)
Benefits:
- Returns multiple matches
- Simpler logic
- No position dependency
Common Mistakes
- Forgetting
0in MATCH (exact match) - Misaligned ranges between INDEX and MATCH
- Ignoring text vs number mismatch
- Not cleaning spaces in data
- Expecting INDEX + MATCH to return multiple results
- Using full columns on very large datasets
- Incorrect nesting of formulas
Pro Tips / Better Alternatives
Use FILTER for Simpler Lookups
=FILTER(B:B, A:A=A2)
Best when:
- You want all matches
- You want simpler logic
Use ARRAYFORMULA for Bulk Lookups
=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A, A:B, 2, FALSE)))
Handles entire column at once.
Combine INDEX + MATCH with Multiple Criteria
=INDEX(C:C, MATCH(1, (A:A=A2)*(B:B=B2), 0))
Use for advanced models with multiple conditions.
Use EXACT for Debugging
=EXACT(A2, A3)
Checks if values truly match.
Pre-Clean Data
Use:
=TRIM()
=CLEAN()
=VALUE()
Before applying lookup formulas.
Quick Fix Checklist
- Use INDEX + MATCH with correct structure
- Set MATCH to 0 (exact match)
- Align lookup and return ranges
- Fix data type mismatch
- Remove extra spaces
- Avoid full column references
Bottom Line
If your XLOOKUP alternative isn’t working, fix in this order:
- Correct INDEX + MATCH structure
- Use
0for exact match - Align lookup and return ranges
- Fix data types (text vs number)
- Remove extra spaces
- Handle duplicates properly
Once these are fixed, your lookup formulas will work reliably, even without XLOOKUP.