How to Split Large Excel Files: 5 Methods (Free Tools + VBA Code)
Updated: Jan 21, 2026 • 10 min read • Data Management
Managing a 50-sheet Excel workbook or a file with 2 million rows is a nightmare. Excel crashes. Emails bounce back ("File too large"). Collaborators complain about slow loading times.
This guide shows you 5 proven methods to split Excel files - from beginner-friendly tools to advanced VBA scripts - used by data analysts at Google,Amazon, and Fortune 500 companies.
📊 You'll Learn:
- When to split by sheet vs. rows vs. file size
- The fastest client-side tool (no upload required)
- How to automate splits with VBA + Python
- Handling 1GB+ files without Excel crashing
Why Split Excel Files?
Before diving into methods, understand when splitting is necessary:
1. File Size Limits
Problem: Email services (Gmail, Outlook) limit attachments to 25MB. Cloud storage plans restrict uploads.
Solution: Split a 100MB file into 4x 25MB files.
2. Performance Issues
Problem: Excel slows to a crawl with 500k+ rows. Formulas recalculate for 5 minutes.
Solution: Split into 50k-row chunks for faster editing.
3. Team Collaboration
Problem: You have Q1-Q4 data in one file, but need to send Q1 to the finance team and Q2 to marketing.
Solution: Split by sheet - each department gets only their data.
Method 1: Client-Side Web Tool (Fastest & Safest)
For 95% of users, this is the go-to method. No coding, no uploads, and supports files up to 500MB.
Step-by-Step: Splitting by Sheets
Use Case: You have a workbook with 20 regional sales reports (one sheet per region) and need to send each region their own file.
- Open iloveexcel.co/split-excel
- Upload your master file (e.g., "Sales_2025_All_Regions.xlsx")
- Select mode: "Split by Sheets"
- Click Split - You get a ZIP file containing 20 separate .xlsx files (one per sheet)
⏱️ Speed Test: Splitting a 50MB file with 30 sheets takes ~3 seconds on a mid-range laptop.
Step-by-Step: Splitting by Row Count
Use Case: You have a customer database with 2 million rows but need files under 100k rows for easier analysis.
- Upload your large file
- Select mode: "Split by Rows"
- Enter: 100000 (rows per file)
- Result: 20 files named "Part_1.xlsx", "Part_2.xlsx", etc.
Method 2: Excel Built-In (Move or Copy)
If you only need to split one or two sheets manually:
- Right-click the sheet tab → "Move or Copy"
- Select "(new book)" from the dropdown
- Check "Create a copy"
- Click OK → Save the new file
- Repeat for each sheet
Limitation: Tedious for 10+ sheets. No way to split by rows.
Method 3: VBA Macro (Automate Repetitive Splits)
For recurring splits (e.g., monthly reports), use this VBA script:
Sub SplitWorkbookBySheets()
Dim ws As Worksheet
Dim newBook As Workbook
For Each ws In ThisWorkbook.Worksheets
' Create new workbook for each sheet
Set newBook = Workbooks.Add
ws.Copy Before:=newBook.Sheets(1)
' Save with sheet name
newBook.SaveAs ThisWorkbook.Path & "\" & ws.Name & ".xlsx"
newBook.Close SaveChanges:=False
Next ws
MsgBox "Split complete!"
End SubHow to Use:
- Press Alt + F11 to open VBA editor
- Insert → Module
- Paste the code above
- Press F5 to run
Method 4: Python (openpyxl) for Programmatic Splitting
For data scientists working with pandas + Jupyter:
import pandas as pd
# Read large Excel file
df = pd.read_excel('large_file.xlsx')
# Split into chunks of 50k rows
chunk_size = 50000
for i in range(0, len(df), chunk_size):
chunk = df[i:i+chunk_size]
chunk.to_excel(f'output_part_{i//chunk_size + 1}.xlsx', index=False)Advantage: Can combine splits with data cleaning (remove duplicates, fix dates, etc.)
Method 5: Power Query (For Filtered Splits)
If you need to split based on criteria (e.g., "Create separate files for each Country in the Country column"):
- Data → From Table/Range
- In Power Query: Group by "Country"
- Right-click grouped table → "Extract Values"
- Load each group as a new sheet or export separately
Comparison Table: Which Method is Best?
| Method | Ease | Speed | Best For |
|---|---|---|---|
| Client-Side Tool | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | One-time splits, non-coders |
| Excel Move/Copy | ⭐⭐⭐⭐ | ⭐⭐ | 1-2 sheets only |
| VBA Macro | ⭐⭐⭐ | ⭐⭐⭐⭐ | Recurring monthly splits |
| Python/openpyxl | ⭐⭐ | ⭐⭐⭐⭐⭐ | Data pipelines, automation |
| Power Query | ⭐⭐⭐ | ⭐⭐⭐ | Filter-based splits |
Troubleshooting Common Issues
❌ "File too large to process" error
Cause: Your browser ran out of RAM (client-side tools are limited by device memory).
Fix: Close other tabs/programs, or use Python/VBA for 1GB+ files.
❌ Formulas show #REF! errors after split
Cause: Formulas referencing other sheets break when split.
Fix: Convert formulas to values (Ctrl+C → Paste Special → Values) before splitting.
❌ Formatting lost after split
Cause: CSV exports don't preserve formatting.
Fix: Always export as .xlsx, not .csv, when splitting.
Need to split a file right now?
Use our free tool - splits happen in your browser (no upload required). Supports sheets, rows, and custom criteria.
Try Split Tool (Free) →