How to split an Excel file into multiple files
- Choose the file. An .xlsx, .xlsm, .xls, .ods or .csv file. Pick the sheet if the workbook has several.
- Choose how to split. By the values of a column (one file per region, customer, month…), every N rows, or one file per sheet.
- Choose the output. A ZIP with one Excel file per part, a ZIP of CSV files, or a single workbook with one sheet per part.
- Download. Every file keeps the header row, so each one can be opened and used on its own.
Private by design
The file is read and split by JavaScript in your browser, in a background worker. It is never uploaded, so it is safe to split customer lists, payroll or sales data. The page only downloads its own code and the open-source SheetJS, PapaParse and fflate libraries from this site, and keeps working if you go offline after it loads.
Three ways to split a sheet
- By column valueOne file for each distinct value in a column: a file per sales rep to send their own accounts, per region, per store or per month. Each file is named after its value.
- Every N rowsEqual parts of, say, 500 or 10,000 rows, for import tools that limit the file size, mail-merge batches or sharing a huge list in pieces.
- One file per sheetEach tab of a workbook saved as its own .xlsx or .csv file, named after the sheet. Number formats, column widths and merged cells are kept.
Splitting CSV files that are too big for Excel
Excel opens at most 1,048,576 rows per sheet, and it silently drops the rest of a bigger CSV. This tool reads CSV files as a stream, in blocks of a few megabytes, so the whole file never has to fit in memory at once. Choose “Every N rows” and the “Excel maximum” preset to get parts of 1,048,575 rows plus the header, each of which opens completely in Excel. CSV output is the fastest and lightest; Excel output of such large parts works but needs much more memory.
The text of a CSV is copied exactly into CSV parts, with the same separator, and saved as UTF-8 so accents open correctly in Excel. When you choose Excel output, values that are clearly numbers become numbers, while codes with leading zeros, such as 00123, stay as text.
How file names are chosen
When you split by a column, each file is named after the value, for example North.xlsx or Acme Ltd.csv. Characters that are not allowed in file names (\ / : * ? " < > |) are replaced with an underscore, names are shortened to 100 characters, reserved Windows names such as CON are prefixed, and values that differ only in upper or lower case get a number so no file overwrites another. Rows with an empty value go to (empty).xlsx. In a single workbook, sheet names are limited to 31 characters, as Excel requires.
How to do it in Excel
Excel has no “split” button. The usual ways are filtering by each value and copying the visible rows to a new workbook, which is slow with dozens of values, or a VBA macro, which needs a desktop version of Excel and a macro-enabled file. Power Query can load a filtered copy per value, but you have to build one query for each output. This tool does the whole loop in one click.
Known limitations
- Workbooks (.xlsx, .xls, .ods) are loaded in memory; on phones keep them under about 20 MB. Large files are better as CSV.
- When splitting by column or into one workbook, the rows are kept in memory until the files are written, so the practical limit is your device’s memory.
- Splitting by value creates at most 10,000 files. A column with a different value on every row (such as an ID) is usually the wrong choice.
- Fonts and colours are not copied when splitting by rows or by value; values, dates and number formats are. Formulas become their calculated values.
- The header must be in the first non-empty row. Password-protected files cannot be opened.