Excel 宏 将工作表中的数据按照顺序分拆到 本工作簿 的其他工作表

    xiaoxiao2022-07-05  171

    (本文版本office2016)

    1.需要打开“开发工具”选项

    2.定义宏

    3.代码(文档最后)

    4.执行

    5.拆分完成

     

    Sub CF()     Dim myRange As Variant     Dim myArray     Dim titleRange As Range     Dim title As Variant     Dim columnNum As Integer     myRange = Application.InputBox(prompt:="请选择标题行:", Type:=8)     myArray = WorksheetFunction.Transpose(myRange)     Set titleRange = Application.InputBox(prompt:="请选择拆分的表头,必须是第一行,且为一个单元格,如:“分公司”", Type:=8)     title = titleRange.Value     columnNum = titleRange.Column     Application.ScreenUpdating = False     Application.DisplayAlerts = False     Dim i&, Myr&, Arr, num&     Dim d, k     For i = Sheets.Count To 1 Step -1         If Sheets(i).Name <> "全司汇总" Then                    End If     Next i     Set d = CreateObject("Scripting.Dictionary")     Myr = Worksheets("全司汇总").UsedRange.Rows.Count     Arr = Worksheets("全司汇总").Range(Cells(2, columnNum), Cells(Myr, columnNum))     For i = 1 To UBound(Arr)         d(Arr(i, 1)) = ""     Next     k = d.keys     For i = 0 To UBound(k)         Set conn = CreateObject("adodb.connection")         conn.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName         Sql = "select * from [全司汇总$] where " & title & " = '" & k(i) & "'"         Worksheets.Add after:=Sheets(Sheets.Count)         With ActiveSheet             .Name = k(i)             For num = 1 To UBound(myArray)                 .Cells(1, num) = myArray(num, 1)             Next num             .Range("A2").CopyFromRecordset conn.Execute(Sql)         End With         Sheets(1).Select         Sheets(1).Cells.Select         Selection.Copy         Worksheets(Sheets.Count).Activate         ActiveSheet.Cells.Select         Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False         Application.CutCopyMode = False     Next i     conn.Close     Set conn = Nothing     Application.DisplayAlerts = True     Application.ScreenUpdating = True End Sub  

    最新回复(0)