ThisCalculator

Everyday

Split Excel Sheet into Multiple Sheets

Updated · Standard formula, shown below

Average pace 5.00 min/km
Average speed
12.00 km/h
Result
Finish time
50 min
You entered
Distance
10 km
You entered

Split Excel Sheet into Multiple Sheets

To split an Excel sheet into multiple sheets, you can use the built-in “Move or Copy” feature to manually divide data, or use a PivotTable and “Show Report Filter Pages” to automatically create separate sheets based on a category. This guide covers both methods, plus how to split by rows, columns, or with VBA for large datasets.

Why Split a Sheet into Multiple Sheets?

Splitting a large worksheet into separate sheets helps you organize data by category (e.g., by region, month, or department), reduce clutter, and make it easier to share or analyze specific subsets. It also improves performance if the original sheet has thousands of rows, and it allows different users to work on different parts without conflicting.

Common scenarios include splitting a sales log into per-month sheets, a contact list into per-state sheets, or an inventory into per-category sheets. The method you choose depends on whether you need a one-time split or a recurring automated process.

Method 1: Manual Copy with “Move or Copy”

For a one-time split where you know exactly which rows go where, the simplest approach is to select the rows, copy them, and paste into a new sheet.

  1. Open your workbook and select the rows you want to move (click the row numbers while holding Ctrl to select multiple).
  2. Right-click a selected row and choose Copy (or press Ctrl+C).
  3. Click the + icon at the bottom to create a new sheet, or go to an existing sheet where you want the data.
  4. Click cell A1 in the destination sheet and press Ctrl+V to paste.
  5. Right-click the new sheet tab, choose Rename, and type a descriptive name (e.g., “North Region”).
  6. Repeat for each group of rows.

If you want to move (not copy) the rows, use Cut (Ctrl+X) instead of Copy. Be careful: cutting and pasting large blocks can be slow, and if you paste into a filtered range, data may be lost.

Method 2: Split by Category with a PivotTable

When you have a column that identifies the group (like “Region” or “Month”), a PivotTable can automatically split your data into separate sheets, one per category.

  1. Select any cell in your data range, then go to Insert > PivotTable.
  2. In the dialog, choose New Worksheet and click OK.
  3. Drag the category field (e.g., “Region”) to the Filters area.
  4. Drag other fields you want to keep (e.g., “Sales”, “Date”) to the Rows or Values area as needed.
  5. With the PivotTable selected, go to PivotTable Analyze > Options > Show Report Filter Pages.
  6. Choose the filter field (Region) and click OK. Excel creates a new sheet for each unique value in that field.

This method creates a PivotTable on each sheet, not a static copy. If you want the raw data (not a summary), you can convert each PivotTable to values by copying and pasting as values, or use the next method.

Method 3: Split by Rows with a Helper Column and Filter

If you want to split by a specific number of rows (e.g., every 100 rows), you can add a helper column that assigns a group number, then filter and copy each group.

  1. Insert a new column to the right of your data (e.g., column Z).
  2. In the first data row, type a formula like =INT((ROW()-1)/100) to assign group 0, 1, 2, etc. Adjust the 100 to your desired chunk size.
  3. Copy the formula down for all data rows.
  4. Filter the table by the helper column (select a value like 0), then copy the visible rows and paste into a new sheet.
  5. Repeat for each group number.

This is useful for splitting a list into equal-sized chunks, such as breaking a mailing list into batches of 500.

Method 4: Using VBA for Automation

If you need to split a sheet into multiple sheets regularly, a simple VBA macro can automate the process. This is especially helpful when the data changes each week.

  1. Press Alt+F11 to open the VBA editor.
  2. Go to Insert > Module.
  3. Paste the following code (adjust the column letter and header row as needed):
Sub SplitByCategory()
    Dim ws As Worksheet
    Dim dict As Object
    Dim key As Variant
    Dim lastRow As Long, i As Long
    Dim col As String
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    col = "A" ' column with the category
    lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' Collect unique values
    For i = 2 To lastRow ' assuming row 1 is header
        key = ws.Cells(i, col).Value
        If Not dict.Exists(key) Then dict.Add key, Nothing
    Next i
    
    ' Create sheets and copy data
    For Each key In dict.Keys
        On Error Resume Next
        Application.DisplayAlerts = False
        ThisWorkbook.Sheets(key).Delete
        Application.DisplayAlerts = True
        On Error GoTo 0
        
        Dim newWs As Worksheet
        Set newWs = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        newWs.Name = key
        ws.Rows(1).Copy newWs.Rows(1) ' copy header
        
        For i = 2 To lastRow
            If ws.Cells(i, col).Value = key Then
                ws.Rows(i).Copy newWs.Rows(newWs.Cells(newWs.Rows.Count, 1).End(xlUp).Row + 1)
            End If
        Next i
    Next key
End Sub
  1. Press F5 to run the macro. It will create a new sheet for each unique value in column A (adjust the column letter in the code).

Before running any VBA, save your workbook as a Macro-Enabled Workbook (.xlsm). Also, test on a copy of your data first, as macros cannot be undone.

Common Problems and How to Avoid Them

  • Losing data when pasting into a filtered range: Always paste into a fresh sheet, not into a filtered table.
  • Formulas referencing the original sheet: When you copy cells with formulas, they may still reference the original sheet. Use Paste Special > Values if you want static data.
  • Duplicate sheet names: If your category values contain characters not allowed in sheet names (like / or \), Excel will error. Rename the sheets manually or use a code that sanitizes names.
  • Very large datasets: Manual copy/paste can be slow. Use the PivotTable method or VBA for better performance.
  • Accidentally moving instead of copying: If you use Cut, the original data disappears. Always use Copy unless you are sure.

Alternatives to Splitting Sheets

Sometimes splitting isn’t the best solution. Consider these alternatives:

  • Use Excel Tables and Slicers: Convert your range to a Table (Ctrl+T) and add slicers to filter interactively without creating new sheets.
  • Use Power Query: You can load data into Power Query, group by a column, and load each group to a separate sheet automatically (using the “Split Column” feature or by writing a query that outputs multiple tables).
  • Use Conditional Formatting or Filters: If you just need to view subsets, filters are simpler and don’t duplicate data.
  • Create a Summary Sheet with Formulas: Use SUMIFS or COUNTIFS to summarize data by category without splitting.

Frequently Asked Questions

How do I split an Excel sheet into multiple sheets based on column values?

Use the PivotTable “Show Report Filter Pages” method (described above) or the VBA macro. Both automatically create a new sheet for each unique value in the chosen column. The PivotTable method is easier for beginners, while VBA gives you more control over the output format.

Can I split a sheet into multiple files instead of sheets?

Yes. To split into separate workbooks, you can use VBA to create a new workbook for each category and copy the data there. Alternatively, you can copy each group to a new sheet, then use “Save As” to save each sheet as a separate CSV or XLSX file (right-click the sheet tab > Move or Copy > new workbook).

Why does my PivotTable split create only one sheet?

If you see only one sheet, the filter field may have only one unique value, or you may have placed the field in the Rows area instead of Filters. Make sure the field is in the Filters area, and that your data has multiple distinct values in that column.

How do I split a sheet into equal parts by number of rows?

Add a helper column with a formula like =INT((ROW()-1)/N) where N is the number of rows per part. Then filter by each group number and copy to new sheets. This works well for splitting a list into batches of 100, 500, etc.

Is there a way to split a sheet without losing formatting?

When you copy and paste, formatting (colors, borders, column widths) is usually preserved if you paste normally. If you use Paste Special > Values, formatting is lost. For PivotTable splits, the formatting may not match the original; you can copy the original sheet and then delete unwanted rows instead.

Can I undo a split after running a macro?

No, VBA macros cannot be undone with Ctrl+Z. Always save a backup copy of your workbook before running any macro. The manual methods (copy/paste) can be undone if you do them step by step.

Related

Formula used
in t | Finish time | min | 50 | 0
in d | Distance | km | 10 | 0
out pace | Average pace | min/km | t / d | 2
out speed | Average speed | km/h | d / (t / 60) | 2

Each line is one input (in, sel, list) or one result (out: label, unit, formula, decimals). How the calculators work

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.