Excel根据多列分组拆分成多个文件

您所在的位置:网站首页 如何按条件把list拆分多个文件夹 Excel根据多列分组拆分成多个文件

Excel根据多列分组拆分成多个文件

2024-07-11 13:42| 来源: 网络整理| 查看: 265

Sub SplitWorkbookBySchoolAndClass()     Dim dataSheet As Worksheet     Dim outputSheet As Worksheet     Dim currentRow As Long     Dim lastRow As Long     Dim startRFow As Long     Dim school As String     Dim class1 As String     Dim filePath As String     Dim fileDirectory As String     Dim previousSchool As String     Dim previousClass As String          ' 设置数据源工作表名称     Set dataSheet = ThisWorkbook.Sheets("Sheet1") ' 更改为你的数据源工作表名称

    ' 获取数据源的最后一行     lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row

    ' 初始化学校和班级变量     previousSchool = ""     previousClass = ""     ' 下一次开始的行数     startRFow =  2     ' 设置生成文档目录     fileDirectory = "C:\Users\CGF\Desktop\新建文件夹\"     ' 遍历数据源中的每一行     For currentRow = 2 To lastRow         ' 获取当前行的学校和班级         school = dataSheet.Range("A" & currentRow).Value         class1 = dataSheet.Range("B" & currentRow).Value                  ' 如果学校或班级发生变化,并且之前已经有学校和班级记录,则创建新的工作簿并保存         If (school previousSchool Or class1 previousClass) And (previousSchool "" And previousClass "") Then             ' 设置文件路径和名称             filePath = fileDirectory & previousSchool & "-" & previousClass & ".xlsx" ' 更改为你的输出文件夹路径

            ' 创建新的工作簿             Set outputSheet = Workbooks.Add(xlWBATWorksheet).Sheets("Sheet1")

            ' 复制当前班级的数据到新工作簿(包括标题行)             dataSheet.Range("A1:C1").Copy outputSheet.Range("A1")             dataSheet.Range("A" & startRFow & ":C" & currentRow - 1).Copy outputSheet.Range("A2")             startRFow = currentRow             ' 保存新工作簿并关闭             Application.DisplayAlerts = False             outputSheet.Parent.SaveAs Filename:=filePath             outputSheet.Parent.Close SaveChanges:=False             Application.DisplayAlerts = True         End If

        ' 更新学校和班级变量         previousSchool = school         previousClass = class1     Next currentRow

    ' 处理最后一组学校和班级数据     If previousSchool "" And previousClass "" Then         ' 设置文件路径和名称         filePath = fileDirectory & previousSchool & "-" & previousClass & ".xlsx" ' 更改为你的输出文件夹路径

        ' 创建新的工作簿         Set outputSheet = Workbooks.Add(xlWBATWorksheet).Sheets("Sheet1")

        ' 复制当前班级的数据到新工作簿(包括标题行)         dataSheet.Range("A1:C1").Copy outputSheet.Range("A1")         dataSheet.Range("A" & startRFow & ":C" & currentRow - 1).Copy outputSheet.Range("A2")

        ' 保存新工作簿并关闭         Application.DisplayAlerts = False         outputSheet.Parent.SaveAs Filename:=filePath         outputSheet.Parent.Close SaveChanges:=False         Application.DisplayAlerts = True     End If

    MsgBox "拆分完成!" End Sub



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3