Article content and detailed guides remain in English. The selected language applies to controls and quick instructions.

Back to articles

VLOOKUP, XLOOKUP and INDEX-MATCH for Email List Management in Excel and Google Sheets

On this page

Why Lookup Formulas Matter for Email Lists

Email data lives in multiple spreadsheets: CRM exports, event sign-ups, purchased lists, website form submissions and partner data. Lookup formulas are how you merge, compare and enrich these lists without manual matching:

Task Without lookups With lookups
Find duplicates across two lists Manual side-by-side comparison Formula flags matches in seconds
Add company names to an email list Copy-paste one at a time Formula pulls from reference sheet
Check which emails are already in CRM Visual scanning Formula returns "Already in CRM" or blank
Merge data from two exports Manual matching by email Formula joins data on email key
Identify unsubscribes from a send list Compare lists manually Formula marks unsubscribed contacts
Enrich with custom fields from another source Manual data entry Formula pulls matching fields

The Three Lookup Functions

VLOOKUP (vertical lookup)

Aspect Details
Syntax =VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
Available in Excel (all versions); Google Sheets
How it works Searches the first column of a range for a value and returns a value from a specified column
Limitation Can only search the leftmost column; returns one column at a time
Best for Simple lookups where the email is in the first column of your reference data

XLOOKUP (modern replacement)

Aspect Details
Syntax =XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
Available in Excel 365 / Excel 2021+; Google Sheets
How it works Searches any column for a value and returns a value from any other column
Advantage over VLOOKUP No column index number needed; searches any direction; custom not-found message; handles errors natively
Best for All lookups in modern Excel; cleaner and more flexible than VLOOKUP

INDEX-MATCH (classic flexible lookup)

Aspect Details
Syntax =INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
Available in Excel (all versions); Google Sheets
How it works MATCH finds the row position; INDEX returns the value from that position in another column
Advantage over VLOOKUP Searches any column; faster on large datasets; more flexible
Best for Older Excel versions; very large datasets; advanced multi-criteria lookups

Common Email List Tasks with Formulas

Task 1: Find duplicates between two lists

Scenario: You have a new email list (Sheet1) and want to check which emails already exist in your master list (Sheet2).

Function Formula (in Sheet1, checking against Sheet2) Result
VLOOKUP =IF(ISNA(VLOOKUP(A2,Sheet2!A:A,1,FALSE)),"New","Duplicate") "New" or "Duplicate"
XLOOKUP =XLOOKUP(A2,Sheet2!A:A,Sheet2!A:A,"New","Duplicate") Displays email if found; "New" if not
INDEX-MATCH =IF(ISNA(MATCH(A2,Sheet2!A:A,0)),"New","Duplicate") "New" or "Duplicate"
COUNTIF (simpler) =IF(COUNTIF(Sheet2!A:A,A2)>0,"Duplicate","New") "New" or "Duplicate"

Task 2: Pull company name from a reference list

Scenario: You have emails in column A and need company names from a reference sheet where email is in column A and company is in column B.

Function Formula Notes
VLOOKUP =VLOOKUP(A2,Reference!A:B,2,FALSE) Returns company from column B of reference
XLOOKUP =XLOOKUP(A2,Reference!A:A,Reference!B:B,"Not found") Cleaner; shows "Not found" for missing
INDEX-MATCH =INDEX(Reference!B:B,MATCH(A2,Reference!A:A,0)) Works in all Excel versions

Task 3: Merge data from two sources

Scenario: You have emails with names in one export, and the same emails with company names in another export. You want all data in one sheet.

Step Formula (assuming email in A2, looking up Reference sheet) Purpose
Pull first name =XLOOKUP(A2,Reference!A:A,Reference!B:B,"") Get first name from reference
Pull last name =XLOOKUP(A2,Reference!A:A,Reference!C:C,"") Get last name from reference
Pull company =XLOOKUP(A2,Reference!A:A,Reference!D:D,"") Get company from reference
Pull multiple columns at once (XLOOKUP) =XLOOKUP(A2,Reference!A:A,Reference!B:D,"") Returns all three columns at once (Excel 365)

Task 4: Check unsubscribes against a send list

Scenario: You have a send list and an unsubscribe list. Mark anyone who has unsubscribed.

Function Formula Result
XLOOKUP =XLOOKUP(A2,Unsubs!A:A,"Unsubscribed","Active") "Active" or "Unsubscribed"
COUNTIF =IF(COUNTIF(Unsubs!A:A,A2)>0,"Unsubscribed","Active") Same result; simpler

Task 5: Case-insensitive email matching

Email addresses are case-insensitive, but spreadsheet lookups are case-sensitive by default. This causes missed matches:

Approach Formula Notes
Pre-clean with LOWER =VLOOKUP(LOWER(A2),LOWER(Reference!A:B),2,FALSE) Array formula in older Excel; works in Google Sheets
XLOOKUP (case-insensitive by default) =XLOOKUP(A2,Reference!A:A,Reference!B:B) XLOOKUP is case-insensitive by default
Best practice Clean both lists first: in a helper column, =LOWER(TRIM(A2)) Eliminates case and whitespace issues

Task 6: Fuzzy matching for typos

When email lists have typos (jsmith@gmial.com vs jsmith@gmail.com), exact lookups fail. Strategies:

Approach Formula or method Best for
Domain extraction + name comparison =LEFT(A2,FIND("@",A2)-1) for local part; =MID(A2,FIND("@",A2)+1,LEN(A2)) for domain Separate matching by email parts
EDIT distance (Google Sheets add-on) Fuzzy Match add-on; Fuzzymatch() custom function Catching typos like gmial/gamil
Exact domain match + manual review =IF(MID(A2,FIND("@",A2)+1,100)=MID(B2,FIND("@",B2)+1,100),"Domain match","Different domain") Narrowing manual review to same-domain entries

Performance Tips for Large Email Lists

Tip Why it helps When to use
Use INDEX-MATCH instead of VLOOKUP on 100K+ rows INDEX-MATCH is faster; VLOOKUP scans entire columns Large datasets in older Excel versions
Use XLOOKUP in Excel 365 Optimised for performance; handles large ranges Excel 365 with large datasets
Sort reference data and use approximate match Sorted data with approximate match is much faster Very large reference tables (1M+ rows)
Convert ranges to Excel Tables Structured references; auto-expansion; better performance Any dataset that grows over time
Use helper columns with LOWER(TRIM()) Pre-clean once instead of in every formula When lookup formulas are slow due to nested functions
Copy formula results and paste as values Removes formula recalculation overhead After lookups are complete; before sharing
Use Power Query (Excel) or Apps Script (Google) Handles millions of rows; more efficient than formulas Enterprise-scale email list management

Before Using Lookups: Clean Your Data

Lookup formulas only work well with clean data. Before running lookups, extract and deduplicate your email addresses. Upload your raw data files (CSV, XLSX, TXT, PDF) to Email Extractor to extract email addresses from mixed-format files and remove duplicates. This gives you a clean, deduplicated email column that lookup formulas can match reliably, rather than dealing with formatting inconsistencies, hidden characters and duplicate entries that cause VLOOKUP and XLOOKUP to return errors or miss matches.

Extract emails

Explore tools

Verify emails

Check address validity before using your list.

ZeroBounce

Email Verification

Verifies email lists and provides tools for monitoring deliverability.

Useful when list cleaning and sender health belong in one workflow.

Explore ZeroBounce (opens in a new tab)