Excel 一個工作表進行按行數拆分


1. 如下Excel表,總共有120多行數據,如何將以50行數據為一個工作表進行拆分
Sub ZheFenSheet()

    Dim r, c, i, WJhangshu, WJshu, bt As Long
    r = Range("A" & Rows.Count).End(xlUp).Row
    b = InputBox("請輸入分表行數")
    If IsNumeric(b) Then
           WJhangshu = Int(b)
        Else
            MsgBox "輸入錯誤", vbOKOnly, "錯誤"
            End
    End If
    c = Cells(1, Columns.Count).End(xlToLeft).Column
    bt = 1 '標題行數
    'WJhangshu = 50 '每個文件的行數
    WJshu = IIf(r - bt Mod WJhangshu, Int((r - bt) / WJhangshu), Int((r - bt) / WJhangshu) + 1)
    
    '------
    Set fs = CreateObject("Scripting.FileSystemObject") '
    
    For i = 0 To WJshu
        Workbooks.Add
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(i + 1, String(Len(WJshu), 0)) & "." & fs.GetExtensionname(ThisWorkbook.FullName)   '擴展名
        Application.DisplayAlerts = True
        ThisWorkbook.ActiveSheet.Range("A1").Resize(bt, c).Copy ActiveSheet.Range("A1")
        ThisWorkbook.ActiveSheet.Range("A" & bt + i * WJhangshu + 1).Resize(WJhangshu, c).Copy _
        ActiveSheet.Range("A" & bt + 1)
        ActiveWorkbook.Close True
    Next


End Sub

 

2.  如下Excel表  按照 XX 列 工作表進行拆分

' 如下Excel表  按照 XX 列 工作表進行拆分

' 第三列 任務負責人 ,關鍵字
' ******************************************
' -----------------------------------------
'  Str = Arr(i, 1)   '第一列 任務負責人 ,關鍵字
 
 
 Sub 如何將一個Excel工作表的數據拆分成多個工作表()
    Dim Arr, Rng As Range, Sht As Worksheet, Dic As Object
    Dim k, t, Str As String, i As Long, lc As Long
    
    Application.ScreenUpdating = False '關閉屏幕更新
    Arr = Range("A1").CurrentRegion.Value
    
    lc = UBound(Arr, 2) '求取最后一列的列號
    
    Set Rng = Rows(1) '標題行
    Set Dic = CreateObject("Scripting.Dictionary") '創建字典
    
    For i = 2 To UBound(Arr)
        
        '-----------------------------------------
        Str = Arr(i, 1) '第一列 拆分 訂單號,關鍵字
        '-----------------------------------------
        
        If Not Dic.Exists(Str) Then '如果字典沒有關鍵字
            Set Dic(Str) = Cells(i, 1).Resize(, lc) '把當前行裝入到字典中
        Else '否則(字典中存在關鍵字)
            Set Dic(Str) = Union(Dic(Str), Cells(i, 1).Resize(, lc)) '把行連合起來
        End If
        
    Next
    
    k = Dic.Keys '字典關鍵字集合
    t = Dic.Items '字典項目集合
    On Error Resume Next
    With Sheets
        For i = 0 To Dic.Count - 1 '循環關鍵字的個數
            Set Sht = .Item(k(i)) '給變量賦值(工作表名為關鍵字)
            If Sht Is Nothing Then '該工作表不存在則插入一個空工作表
                .Add(After:=.Item(.Count)).Name = k(i) '新建的工作表將置於所有工作表之后,並命名為關鍵字
                Set Sht = ActiveSheet '活動工作表給變量
            Else '否則
                Sht.Cells.Clear '清除工作中所有內容和格式
            End If
            Rng.Copy Sht.Range("A1") '把標題寫入第一行
            t(i).Copy Sht.Range("A2") '寫入其他內容
            Sht.Cells.EntireColumn.AutoFit '自動調整全工作表單元格的列寬
            Set Sht = Nothing '變量處於初始狀態
        Next
    End With
    Sheets(1).Activate '第1個工作表處於激活狀態
    Application.ScreenUpdating = True '打開屏幕更新
End Sub

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM