Merge and split

Split an Excel file by column value

Pick a column and download one file per distinct value, already filtered and named after the group.

Free, no usage limits Nothing written to disk .xlsx,.xls,.csv

Accepted formats: .xlsx,.xls,.csv

One file is generated per distinct value: a region, a salesperson, a month.

Since more than one file comes out, the download arrives as a ZIP.

The manual work it saves

You have a sales table with a Region column and you need to send each office only its own rows. The usual method: filter by the first region, copy, paste into a new workbook, save as "North.xlsx", go back, change the filter, and on through all fifteen.

That is half an hour of repetitive work, and it invites the classic mistake: leaving the filter in place and saving a file with another region's rows inside. Once sent, every office can see everyone else's numbers.

Here you choose the column and download a ZIP with one file per value. The table is walked once, so no row is left out or lands in two groups.

How the files are named

The name comes from the value itself: North.xlsx, Ana Perez.xlsx, 2026-03.xlsx. It is sanitised first so it is a valid file name — slashes, colons and other forbidden characters are stripped — and shortened if it is very long. If two values would produce the same name, the second is numbered.

With the "Prefix the file name with the column name" option, files come out as Region-North.xlsx. That is worth it when whoever receives the ZIP handles several cuts of the same table and needs to know which criterion was used.

Files come out in the order the values first appear in the table, not alphabetically. That order is stable: the same input file always produces the same result.

Keeping or dropping the column

By default the grouping column is kept in each file. That is the sensible choice: whoever opens "North.xlsx" can see that every row says North, and if the files are ever merged back together no one loses track of where each row came from.

Turn off "Keep the column" only when the value is already in the file name and the repeated column gets in the way — for instance if the output feeds a system that does not expect it.

Blank values and the group limit

Rows whose cell is blank are not discarded: they are all grouped into a file called "(vacio)". That is deliberate, because losing rows silently is worse than handing back a file with an ugly name. It is usually a good sign that data is missing at the source, too.

The cap is 200 groups. If the chosen column has more distinct values — an invoice number, an email address, a timestamp — the tool stops and warns you before building the ZIP. It almost always means the column was the wrong one: you split by categories, not by unique identifiers.

Related tools

If you need to cut by size rather than by content, use Split by rows. To undo the split, Merge stacking rows joins every file back into a single table.

Frequently asked questions

Is it case sensitive?

No. "North" and "north" count as the same value and end up in the same file, which is usually what you want with hand-typed data.

Can I split by two columns at once?

Not in a single pass. Split by the first one, then run each resulting file through the tool again with the second column.

Is the row order kept inside each file?

Yes. Within each group the rows keep the order they had in the original table.

Does my table need a header row?

Yes. This tool needs the title row to know which column you picked, and that header is copied into every file it generates.

What about stray spaces in the value?

Leading and trailing spaces are trimmed when building the file name, but the cell value is copied as it is. If you suspect duplicate groups caused by spaces, clean the column before splitting.