How to split data into multiple worksheets by rows count in Excel?
For example, I have a range of data list, now I want to split it into multiple worksheets by rows count, in this example, I will split it by every 5 rows (see following screenshots). Are there any ways to help us solve this problem quickly? Here I will introduce two tricks for you to get it done easily.
- Reuse Anything: Add the most used or complex formulas, charts and anything else to your favorites, and quickly reuse them in the future.
- More than 20 text features: Extract Number from Text String; Extract or Remove Part of Texts; Convert Numbers and Currencies to English Words.
- Merge Tools: Multiple Workbooks and Sheets into One; Merge Multiple Cells/Rows/Columns Without Losing Data; Merge Duplicate Rows and Sum.
- Split Tools: Split Data into Multiple Sheets Based on Value; One Workbook to Multiple Excel, PDF or CSV Files; One Column to Multiple Columns.
- Paste Skipping Hidden/Filtered Rows; Count And Sum by Background Color; Send Personalized Emails to Multiple Recipients in Bulk.
- Super Filter: Create advanced filter schemes and apply to any sheets; Sort by week, day, frequency and more; Filter by bold, formulas, comment...
- More than 300 powerful features; Works with Office 2007-2019 and 365; Supports all languages; Easy deploying in your enterprise or organization.
The following VBA code can help you split the rows into multiple worksheets by rows count, do as follows:
1. Hold down the ALT + F11 key to open the Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and paste the following code in the Module Window.
VBA: Split data into sheets by rows count in Excel.
Sub SplitData() 'Updateby20140617 Dim WorkRng As Range Dim xRow As Range Dim SplitRow As Integer Dim xWs As Worksheet On Error Resume Next xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) SplitRow = Application.InputBox("Split Row Num", xTitleId, 5, Type:=1) Set xWs = WorkRng.Parent Set xRow = WorkRng.Rows(1) Application.ScreenUpdating = False For i = 1 To WorkRng.Rows.Count Step SplitRow resizeCount = SplitRow If (WorkRng.Rows.Count - xRow.Row + 1) < SplitRow Then resizeCount = WorkRng.Rows.Count - xRow.Row + 1 xRow.Resize(resizeCount).Copy Application.Worksheets.Add after:=Application.Worksheets(Application.Worksheets.Count) Application.ActiveSheet.Range("A1").PasteSpecial Set xRow = xRow.Offset(SplitRow) Next Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
3. Then press F5 key to run the code, and a dialog pops out for selecting a range to split, and then click OK, and another dialog for you to specify the rows count. See screenshot:
4. Click OK, and the range are split into multiple sheets by the rows count.
Note: The split worksheets are placed at the back of the master worksheet.
The above code can only split the data by the specified rows count, and it will not add the title for each worksheet data if your data has the title.
But with Kutools for Excel’s Split Data, you not only can insert the headers for each worksheet data, but also can specify the new split worksheet names.
If you have installed Kutools for Excel, please do as follows:
1. Select the range of data that you want to split.
2. Click Enterprise > Worksheet Tools > Split Data (or Enterprise > Split Data ), see screenshot:
3. In the Split Data into Multiple Worksheets dialog box:
- Select Fixed rows from Split based on option, and enter the number of rows count that you want to split for each worksheets. (If your data has headers and you want to insert them into each new split worksheet, please check My data has headers option.)
- Then you can specify the split worksheet names, under the New worksheets name section, select the worksheet names rules from the Rules drop down list, you can add the Prefix or Suffix for the sheet names as well. See screenshot:
4. After specify the settings, then click OK, and the selected data has been split into multiple worksheets of a new workbook by every 5 rows. And the headers are inserted for each new worksheet. See screenshot:
You are guest
or post as a guest, but your post won't be published automatically.
- To post as a guest, your comment is unpublished.· 4 months agoIs there a way to keep the header across all worksheet?For example, row 1 is the column names and row 2 to row 51 are my data. When I split it into 10 worksheets, I hope to have row 1 be the header and row 2-6 be the data.
- To post as a guest, your comment is unpublished.· 11 months agothis was very helpful. thank you
- To post as a guest, your comment is unpublished.· 1 years agoI have 20 million data in excel. I need to segregate it with first 2500 rows followed by 250 data so on. How can I do it quickly.
- To post as a guest, your comment is unpublished.· 2 years agoMinmatar detected :O
- To post as a guest, your comment is unpublished.· 2 years agothank you. saved a lot of my time.
- To post as a guest, your comment is unpublished.· 2 years agoYears later, and this still holds up excellently. Thanks!
- To post as a guest, your comment is unpublished.· 3 years agoOmg thank you so very much dude!
- To post as a guest, your comment is unpublished.· 3 years agoHi Thanks for this great code, but the concern is, here we can only split fixed number of rows, can you help me with split is based on some name or code, because i have different set of rows for each worksheet.
- To post as a guest, your comment is unpublished.· 4 years agohi this works great but want the output as string how can i modify the code or i can say example : 'output',
- To post as a guest, your comment is unpublished.· 4 years agoThanks a lot for the fantastic VBA-Script. But how to modify it to keep the header row on every split?
- To post as a guest, your comment is unpublished.· 4 years agoThanks, for this fantastic VBA-Script. But how to configure it to repeat the header row on every split?
- To post as a guest, your comment is unpublished.· 4 years agoThanks a lot for this tutorial. It is working fine.
- To post as a guest, your comment is unpublished.· 5 years agoIs there a way to split and then exp[ort to multiple HTML files?
- To post as a guest, your comment is unpublished.· 5 years agoWe can increase rankings of your website in all major search engines at a very affordable price. Email us back to get a full proposal.
- To post as a guest, your comment is unpublished.· 5 years agoI've searched endlessly for this. Thank you so much for this tutorial!!!!
- To post as a guest, your comment is unpublished.· 6 years agoWorks great coupled with this one as necessary: http://www.extendoffice.com/documents/excel/628-excel-split-workbook.html
- To post as a guest, your comment is unpublished.· 6 years agoIt works with one row of column headers. I use multiple rows that include averages and totals. Plus, I have a distribution chart at the bottom. How can I keep these intact? Currently this info is not transferring over to the new worksheets it creates.
- To post as a guest, your comment is unpublished.· 6 years agoI have multiple rows of column headers containing averages and totals at the top of each sheet. I have a distribution chart at the bottom. This needs to be kept on each new sheet split out. How do I make this happen with the tool?
- To post as a guest, your comment is unpublished.· 7 years agohello,
its not working for me. my data is coming from a pivot table and it has header. this vba can export some data but not all... pls assist
- To post as a guest, your comment is unpublished.· 7 years agoGreat . It is awesome ...