Bring columns from a lookup table into your main table by matching a key such as Customer ID, SKU or email, just like VLOOKUP or XLOOKUP but without formulas. Works with CSV and Excel files, shows what matched and what did not, and exports a clean CSV or XLSX.
Last updated:
Both tables are matched in this browser tab and never uploaded.
Result
Advertisement
Advertisement
How to use the CSV VLOOKUP Tool
Add your main table (A): paste CSV or open a CSV/Excel file. Every row of A stays in the result.
Add the lookup table (B) that holds the values you want to bring over.
Pick the match columns in A and B. Columns with the same name are selected automatically.
Tick the columns to bring over from B and choose the join type and how repeated keys are handled.
Check the counts and preview, then download CSV or Excel, or copy the result into your spreadsheet.
Join types at a glance
Example: table A has orders for customers C-101, C-102 and C-108; table B lists customers C-101, C-102 and C-105.
Join type
Rows in the result
Spreadsheet equivalent
Left join
C-101, C-102 with customer details; C-108 with empty (or #N/A) details
=VLOOKUP(B2, Customers!A:D, 2, FALSE) filled down
Inner join
C-101 and C-102 only
VLOOKUP, then filter out #N/A rows
Full join
C-101, C-102, C-108 (no details) and C-105 (no order)
No single formula; needs Power Query (Full Outer merge)
A rows with no match
C-108 only
=ISNA(MATCH(B2, Customers!A:A, 0)) as a filter
Why VLOOKUP results go wrong, and how this tool handles it
Problem
In Excel
Here
Forgot FALSE as the last argument
Approximate match returns a wrong row silently
Always exact match
Key column is not the first column of the range
VLOOKUP cannot look left; you need INDEX/MATCH or XLOOKUP
Any column can be the key
Trailing spaces or different case
#N/A unless you wrap keys in TRIM()
Ignored by default
00123 stored as text vs 123 as number
#N/A
Tick Ignore leading zeros
Inserting a column shifts the column number
Wrong column returned
Columns are chosen by name
Duplicate keys in the lookup table
First match only, with no warning
Counted, with first, last, all or combined options
Tips
Check the "not found" count first. A high count usually means the wrong match column or a formatting difference, not missing data.
Keep an audit trail. Leave the Match column on: filter it for "not found" in Excel to see exactly which keys need attention.
Stacking files instead of matching them? To append rows from several files with the same columns, use the CSV Merger. To see what changed between two versions of the same file, use the CSV Diff Checker.
Frequently asked questions
How do I do a VLOOKUP between two CSV files?
Paste or open the file you want to fill in as table A and the file with the extra information as table B. Choose the shared column in each (for example Customer ID), tick the B columns you want, and keep Join type on Left join. The result is table A with the B columns added, exactly what =VLOOKUP(key, B, column, FALSE) would give for every row.
What is the difference between left, inner and full join?
Left join keeps every row of A and leaves the B columns empty (or your not-found value) when there is no match, like VLOOKUP. Inner join keeps only rows whose key exists in both tables. Full join keeps everything: matched rows, A rows without a match, and B rows that no A row used, which are added at the end.
What happens when a key appears twice in the lookup table?
VLOOKUP and XLOOKUP return the first match only, and that is the default here. You can switch to the last match, return every match (the A row is repeated once per match, like a database join), or combine the matching values into one cell separated by semicolons. The stats show how many keys are repeated in B.
Why are some rows not found even though the IDs look the same?
Usually because of hidden differences: trailing spaces, different capitalization, or leading zeros (00123 in one file, 123 in the other after Excel dropped the zeros). Ignore case and Ignore extra spaces are on by default; tick Ignore leading zeros for numeric codes. Values are compared as text, so 1.0 and 1 are different keys.
Can I match on columns with different names?
Yes. Pick any column in A and any column in B, for example Email in A and E-mail address in B. Only the values need to match, not the headers.
Is this the same as XLOOKUP or INDEX/MATCH?
For exact matches it gives the same result as XLOOKUP(key, B[key], B[column]) or INDEX/MATCH with match type 0, for several columns at once. Approximate (range) lookups, such as finding a tax bracket for an income, are not supported; this tool only does exact matches.
Are my files uploaded?
No. Both tables are read and joined by JavaScript in your browser, so customer lists and price files never leave your computer.
Are all the tools on FreeToolCabin tested for quality and accuracy?
Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.