最近有个Excel文件需要按行数拆分为多个文件,由于数据量太大手动拆分不太现实,通过Copilot获取到了使用VBA宏快速将Excel中的数据每n行分成一个新表,并保留原表的表头的VBA脚本。

  1. 打开Excel文件,按 Alt + F11 打开VBA编辑器。
  2. 在VBA编辑器中,插入一个新模块 (Insert > Module)。
  3. 将以下代码粘贴到模块中:
Sub SplitIntoSheetsByRows()
    Dim ws As Worksheet
    Dim newWs As Worksheet
    Dim lastRow As Long
    Dim rowStep As Long
    Dim i As Long
    Dim header As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1") ' 修改为你的工作表名称
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    rowStep = 5000 ' 修改为行数
    Set header = ws.Rows(1)
    
    For i = 2 To lastRow Step rowStep
        Set newWs = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        header.Copy Destination:=newWs.Rows(1)
        ws.Range(ws.Cells(i, 1), ws.Cells(Application.Min(i + rowStep - 1, lastRow), ws.Columns.Count)).Copy Destination:=newWs.Rows(2)
        newWs.Name = "Part " & (i - 1) & " to " & Application.Min(i + rowStep - 1, lastRow)
    Next i
End Sub
  1. 关闭VBA编辑器,返回Excel。按 Alt + F8,选择 SplitIntoSheets,然后点击“运行”。