Joining Excel files by a shared column means VLOOKUP, XLOOKUP, Power Query, or an ETL pipeline — it is a row-level reconciliation task that a worksheet-stacking tool cannot infer safely. The phrase "merge Excel files based on column" usually describes aligning two tables on a key (such as EmployeeID or OrderID) and producing a single combined table whose rows match across both inputs. Merge Excel Files solves a different, narrower problem: it combines two to ten local .xlsx workbooks into a single downloadable workbook while keeping every source worksheet as its own clearly labeled tab. No rows are appended, no headers are aligned, and no business schema is inferred. Stored cell values are read in the browser and rewritten as new worksheets prefixed with the source workbook and sheet name so duplicates stay distinct. This article explains when a column-based join is the right tool, when stacking worksheets is enough, and exactly how to run the local merge with predictable limits.

What "Merge Excel Files by Column" Usually Means
When spreadsheet authors search for a column-based merge, they usually picture two structurally compatible tables — for example, a Customers table and an Orders table — that share a key column such as CustomerID. The goal is row-level reconciliation: pulling columns from the second table onto matching rows of the first table, or producing a long-format dataset that joins every order to its customer record. Excel ships several mature paths for this exact task.
VLOOKUP and the newer XLOOKUP return a single column from a lookup range, which works for one-off joins but becomes awkward when several columns from the secondary table need to land on the primary table. INDEX/MATCH gives the same outcome with more flexibility around left-side lookups and column position. Power Query (Get & Transform) exposes a dedicated "Merge Queries" step that lets you pick the join key, the join kind (left outer, right outer, inner, anti, full), and which columns to bring across, then materializes the result as a new query that refreshes on demand. Outside Excel, Python's pandas, SQL JOINs, and dedicated ETL tools serve the same purpose on larger datasets.
All of these workflows assume a shared key, a known relationship between the two tables, and a target schema. A file-level merge tool cannot know any of that. Asking a worksheet combiner to "merge based on a column" without telling it the column would be guessing — and a guess in a production dataset is the wrong place to be creative. That is why Merge Excel Files is deliberately explicit: it bundles workbooks, it does not join tables.
When Stacking Worksheets Is the Real Task
Sometimes the right move is not a row-level join at all. A typical scenario is a folder of monthly sales workbooks — January.xlsx, February.xlsx, March.xlsx — each with the same Sales worksheet that the analyst wants to inspect side by side. Another is a multi-region handoff: one workbook per region, each with a Revenue, Costs, and Headcount tab. A third is a developer who exports ten .xlsx files from a build pipeline and needs a single archive workbook for code review without rebuilding any formulas.
In every one of those cases the columns are not "matched" — the workbooks are independent and the user wants them gathered into one file with traceable origin. Stacking worksheets is also the safe choice when a column-based join would be misleading: if two sheets happen to share an "ID" header but store different entities, a VLOOKUP would silently produce wrong matches. Keeping every source worksheet as its own tab preserves provenance and lets the reader decide what to combine downstream.
| Scenario | Right tool family | Why |
|---|---|---|
| Combine monthly .xlsx reports into one archive | Worksheet-stacking merge | Independent sheets, no shared key, provenance matters |
| Pull Customer columns onto the Orders table on CustomerID | VLOOKUP / XLOOKUP / Power Query | Row-level join on a known key |
| Stack ten .xlsx exports from a CI job for review | Worksheet-stacking merge | No schema assumption; no formulas to preserve |
| Combine Orders rows with Customer rows into one long table | Power Query Merge Queries or pandas concat | Schema is intentionally shared, rows are stacked by header |
| Hand off one readable workbook to a non-technical stakeholder | Worksheet-stacking merge | Easy to browse, prefixed tabs are self-documenting |
How the Local Merge Tool Works
Merge Excel Files runs entirely in the browser. The page reads the stored worksheet values from each selected workbook, assigns a unique Excel-safe sheet name based on the source workbook and worksheet, and writes a fresh, data-only .xlsx file as a download. Nothing is uploaded to a server, no account is required, no API call is made, and the original files on the device are not modified. The tool does not produce a cloud share link and does not persist anything beyond the visitor's own browser session.
The output is deliberately data-only. The tool reads the stored cell values that Excel writes when a workbook is saved — the same bytes that Power Query sees when it imports a sheet — and emits a new workbook from those values. It does not calculate formulas, run macros, open hyperlinks, refresh external connections, or inspect embedded content. Formulas, charts, images, comments, conditional rules, named ranges, validation, hidden-sheet state, print settings, protection, merged-cell layout, and workbook metadata are not part of the output. A formula's cached stored value may survive as ordinary data, but the formula itself is not a calculation contract in the downloaded workbook. Keep the source workbooks whenever any of those presentation features carry meaning.
Combining 2 to 10 Local .xlsx Files
- Choose two to ten local .xlsx workbooks whose combined size is no more than 20 MB. Select the files in the order you want them considered — worksheet order in the result follows this order, then the original worksheet order inside each workbook.
- Confirm that every source worksheet should remain its own data-only tab. Do not expect rows to be appended or headers aligned; the tool collects independent worksheets into a single workbook and keeps them that way.
- Select Merge workbooks. The browser validates each input as a classic single-disk OOXML ZIP package — at most 2,000 entries and no more than 50 MB of declared expanded data per file — then reads the stored values locally.
- Download the generated .xlsx file. The combined result may contain up to 50 worksheets, each source sheet is bounded by the addressed-cell limit, and the generated file is capped at 20 MB.
- Open the download in the destination spreadsheet program once. Inspect the prefixed tab names — the browser combines the source workbook and sheet name with a separator, strips unsafe characters, enforces Excel's sheet-name length limit, and adds a numeric suffix when names would otherwise collide.
- Spot-check a few stored values against the source files before sharing the merged workbook. This is the fastest way to catch a selection mistake or a corrupted input.
Limits, Errors, and How Output Sheets Are Named
The tool is bounded on purpose so that a single browser tab can complete the operation predictably. Inputs must be classic, non-encrypted, non-macro-enabled .xlsx packages. Legacy .xls files, macro-enabled .xlsm packages, encrypted workbooks, multi-disk ZIPs, malformed ZIPs, Zip64 packages, oversized packages, or any package that exceeds the per-file or combined caps stops with an error instead of producing a partial merge.
The naming convention is one of the more useful properties to understand. Two workbooks named Team.xlsx and Quarter.xlsx that each contain a worksheet called Data do not silently overwrite one another. The browser derives every output tab name from the source workbook name and the source worksheet name, adds a separator, strips characters Excel forbids in sheet names, trims to Excel's length limit, and appends a numeric suffix when the resulting names would otherwise collide. The result is traceable provenance — you can see at a glance which workbook each tab came from without opening the source file again.
| Property | Value |
|---|---|
| Minimum number of input files | 2 |
| Maximum number of input files | 10 |
| Combined input size cap | 20 MB |
| Per-file entry cap (ZIP entries) | 2,000 |
| Per-file expanded data cap | 50 MB |
| Maximum output worksheets | 50 |
| Maximum output file size | 20 MB |
| Supported input format | Classic, non-encrypted, non-macro .xlsx |
| Output format | Data-only .xlsx |
| Processing location | Browser only — no upload, no API call |
If the destination spreadsheet app displays a tab name that looks unfamiliar, that is usually the browser's collision suffix doing its job. If a tab is missing entirely, the most likely cause is that one of the source files failed the per-file ZIP check and the merge aborted before writing the output. In that case, repair or re-export that source workbook and rerun the merge with a smaller set of files.
Column-Matching Workflows That Live Outside This Tool
When the actual task is a column-based join, use the right tool for that job. Power Query's Merge Queries step is the most discoverable option inside Excel itself: import both tables as queries, open one of them, click Merge Queries, pick the join key column in each table, choose the join kind, and decide which columns of the secondary table to bring across. The result is a new query that materializes the joined table on refresh, with no VLOOKUP formulas to maintain.
For developers who want to script the same thing, pandas exposes DataFrame.merge with explicit on, left_on, right_on, and how arguments that map cleanly to SQL join semantics. SQL is the natural fit when the source data is already in a database. XLOOKUP and VLOOKUP are fine for one-off joins inside an existing workbook; they are not the right tool when the join has to be reproducible across dozens of workbooks or audited for join correctness.
Merge Excel Files is the right tool when the goal is to bundle independent worksheets into a single readable archive with a clear trail back to the source, processed in the browser without uploading anything. It is not a substitute for VLOOKUP, XLOOKUP, Power Query, or an ETL pipeline when the requirement is to align tables on a shared key.
Auditing the Merged Workbook Before Sharing
A short verification pass is worth the few minutes it takes. Open the merged workbook in the destination spreadsheet app, count the tabs against the expected total (the sum of worksheets across the selected workbooks, capped at 50), and confirm the prefixed tab names. Pull up two or three representative cells and compare them against the source workbook — the output is written from the stored cell values read from each source workbook, without formula recalculation.
If the merged workbook is part of a handoff to a stakeholder, leave a short note in your own documentation explaining that the file is data-only: charts, conditional formatting, formulas, validation, and macro logic live in the original workbooks. Stakeholders who open the file expecting pivot-table refreshes or live formulas will otherwise assume the output is a full-fidelity clone. For internal review pipelines, this is rarely a problem because reviewers care about the data, not the presentation.
For dependable use, start with a small representative set — two or three files — download it, and inspect the prefixed tab names and stored values before scaling up to the full bundle. That habit catches a wrong file selection or a corrupted input at the cheapest possible moment, and it gives you a known-good baseline to compare the larger run against.