How to Split an Excel File Into Multiple Files (Free Tool + Steps)

Split an Excel workbook into multiple files tutorial showing VBA Python Excel automation worksheet splitting and bulk file generation
Automatically split large Excel workbooks into multiple files to simplify reporting, sharing, and data management. This tutorial explains how to divide data by worksheet, filter values, departments, employees, or other criteria using VBA, Python, or Excel automation techniques. You’ll also learn how to preserve formatting, file names, and folder structures while generating separate workbooks in bulk. Ideal for analysts, HR teams, finance professionals, administrators, and Excel users who frequently distribute customized reports.

Key takeaways

  • The fastest way to split a spreadsheet into separate files is a folder-writing script, not manual filtering and copy-paste.
  • Excel Splitter is free and open-source (MIT), built in Python with pandas.
  • Split by column (--by region) writes one file per unique value.
  • Split by rows (--rows 1000) writes fixed-size chunks.
  • Output as .xlsx or .csv, with safe, readable file names.

To split an Excel file into multiple files, run a free tool called Excel Splitter, which breaks one spreadsheet into many — either one file per category (like region or client) or into fixed-size chunks of N rows. It's the exact inverse of merging, and it runs in a single command with no manual copy-paste.

Why splitting a spreadsheet by hand is painful

You've got one master sheet and you need it broken up — a separate file for each sales rep, each region, each month, or just smaller pieces because the file is too big to share. The manual way is tedious: filter by a value, copy the visible rows, paste into a new file, save, repeat. On a dozen categories that's a dozen chances to grab the wrong rows or forget one.

A script does it in one pass — every category gets its own correctly-filtered file, named clearly, every time.

sales.xlsx one big file Excel Splitter --by region West.xlsx East.xlsx North.xlsx South.xlsx
One spreadsheet in, many files out — one per category (or fixed-size chunks).

How to install the tool (2 minutes)

You need Python 3.9 or newer. Clone the repository and install its dependencies:

git clone https://github.com/Synth88Labs/excel-tool-splitter.git
cd excel-tool-splitter
pip install -r requirements.txt

Get Excel Splitter on GitHub (free)

How to split an Excel file into multiple files — step by step

Option A — One file per category (split by column)

To write a separate file for each unique value in a column — for example one file per region:

python split_excel.py sales.xlsx --by region -o split_output

You'll get West.xlsx, East.xlsx, North.xlsx, and so on, each containing only that region's rows.

Option B — Fixed-size chunks (split by rows)

To break a large file into smaller pieces of a set number of rows each:

python split_excel.py sales.csv --rows 1000 -o chunks --format csv

This writes part_001.csv, part_002.csv, and so on — 1000 rows per file.

Choose your output format

Add --format csv or --format xlsx (the default) to control the output type, and --prefix to add a label to every file name.

Tip: --by and --rows are mutually exclusive — pick one mode per run. The tool also creates the output folder for you if it doesn't exist.

Split by column vs. split by rows

ModeCommandBest for
By column --by region One file per category — region, client, month, department
By rows --rows 1000 Breaking a huge file into smaller, shareable pieces

Real work use cases

  • Distribute reports — send each manager only their region's or team's rows.
  • Per-client files — split a master list into one file per client for handoff.
  • Break up huge exports — chunk a file that's too big to email or import.
  • Monthly archives — one file per month from a single year-long sheet.
  • Batch processing — split into row chunks to process pieces in parallel.

Common mistakes to avoid

  • Splitting on a messy column. If a column has inconsistent values ("West" vs "west "), you'll get duplicate-looking files. Clean the data first.
  • Too many tiny files. Splitting by a high-cardinality column (like an ID) creates one file per row. Split by a grouping column, not a unique key.
  • Forgetting the format. The default output is .xlsx; add --format csv if you need CSVs.
  • Reusing an output folder. Old files from a previous run may linger — use a fresh or empty output folder.
🔗 Need the opposite? Combine many files back into one with the free Excel/CSV Merger — split and merge are two halves of the same job.

Frequently asked questions

How do I split an Excel file into separate files by a column?

Run python split_excel.py yourfile.xlsx --by COLUMN -o output_folder. The tool writes one file per unique value in that column, each containing only the matching rows.

How do I split a large CSV into smaller files?

Use the row mode: python split_excel.py big.csv --rows 1000 --format csv. This creates files of 1000 rows each.

Can I choose the output format?

Yes. Add --format xlsx (default) or --format csv to control the output file type.

Is Excel Splitter free?

Yes. It's open-source under the MIT license, free for personal and commercial use. The source is on GitHub.

Do I need Excel installed?

No. It reads and writes files with Python libraries, so it works without Microsoft Excel installed.

What happens to blank values in the split column?

Rows with a blank value in the chosen column are written to a file named blank, so no data is lost.

Can I merge the files back together later?

Yes — use the companion Excel/CSV Merger to combine a folder of files back into one.

Summary

Splitting a master spreadsheet by hand is slow and error-prone. Excel Splitter breaks one file into many in a single command — one file per category with --by, or fixed-size chunks with --rows. It's free, open-source, and works without Excel installed.

Download Excel Splitter free on GitHub