美文网首页
根据指定行拆分EXCEL表格

根据指定行拆分EXCEL表格

作者: overad | 来源:发表于2020-06-11 11:16 被阅读0次
    Sub Delete_extra_tables()
    '1、首先删除多余的数据表
    Dim i As Integer
    
    Dim sht As Worksheet
    
    Application.DisplayAlerts = False
    
    If Worksheets.Count > 1 Then
       For Each sht In Worksheets
            If sht.Name <> "数据" Then
                sht.Delete
            End If
        Next
    End If
    
    Application.DisplayAlerts = True
    
    Sheets("数据").Select
    End Sub
    
    Sub create_sht(l As Integer)
    '2、根据需要拆分的列创建不同的sheet页
    Dim i As Integer
    Dim sht As Worksheet
    
    
    
    irows = Sheet1.Range("a100000").End(xlUp).Row
    
    For i = 2 To irows
        k = 0
        For Each sht In Worksheets
            If sht.Name = Sheet1.Cells(i, l) Then
                k = 1
            End If
        Next
        
        If k = 0 Then
            Worksheets.Add after:=Sheets(Sheets.Count)
            Sheets(Sheets.Count).Name = Sheet1.Cells(i, l)
        End If
            
    Next
    Sheet1.Select
    
    End Sub
    
    Sub copy_data(l As Integer)
    '3、复制出对应的数据
    
    Dim i As Integer
    
    irows = Sheet1.Range("a100000").End(xlUp).Row
    
    For i = 2 To Sheets.Count
        'Sheet1.Range("a1:f" & irows).AutoFilter
        Sheet1.Range("a1:f" & irows).AutoFilter Field:=l, Criteria1:=Sheets(i).Name
        Sheet1.Range("a1:f" & irows).Copy Sheets(i).Range("a1")
    
    Next
    
    Sheet1.Range("a1:f" & irows).AutoFilter
    
    End Sub
    
    Sub chaifen()
    '4、将拆分出来的sheet分到不同的workbook里面
    Dim sht As Worksheet
    
    If Sheets.Count > 1 Then
        For Each sht In Worksheets
            If sht.Name <> "数据" Then
                sht.Copy
                ActiveWorkbook.SaveAs Filename:="D:\backup\vba_data\" & sht.Name & ".xlsx"
                ActiveWorkbook.Close
            End If
            
        Next
    End If
    
    MsgBox "Done!"
    
    End Sub
    
    Sub check_sheet_name(chk As Integer)
    '确保要拆分的数据表叫做数据;
    '并且要拆分的数据表为当前选择的表
    Dim str As String
    k = 0
    str = ActiveSheet.Name
    
    If str <> "数据" Then
        MsgBox "请选择要拆分的数据表,并将sheet命名为数据"
        chk = 1
        Exit Sub
    End If
                 
        
    End Sub
    
    Sub split_tab_accord_col()
    
    Dim chkd As Integer
    
    chkd = 0
    
    Call check_sheet_name(chkd)
    
    If chkd = 0 Then
    
        Dim l As Integer
        
        l = Val(InputBox("请输入需要拆分的列:"))
        
        Call Delete_extra_tables
        Call create_sht(l)
        Call copy_data(l)
        
        MsgBox ("处理完毕")
        
        Sheet1.Select
    
    End If
    
    End Sub
    

    相关文章

      网友评论

          本文标题:根据指定行拆分EXCEL表格

          本文链接:https://www.haomeiwen.com/subject/mhzvtktx.html