zoukankan      html  css  js  c++  java
  • 把一个excel拆分成多个工作表

    1.打开visual basic

    2.插入模块

    3.粘贴宏代码

    Sub CFGZB()
    
        Dim myRange As Variant
    
        Dim myArray
    
        Dim titleRange As Range
    
        Dim title As String
    
        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
    
                Sheets(i).Delete
    
            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.jet.oledb.4.0;extended properties=excel 8.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
    
            Application.CutCopyMode = False
    
        Next i
    
        conn.Close
    
        Set conn = Nothing
    
        Application.DisplayAlerts = True
    
        Application.ScreenUpdating = True
    
    End Sub
    View Code

    4.把要分割的工作薄重命名为“数据源”

    因为代码中写死判定值为“数据源”:

    5.插入按钮

    6.给按钮指定宏,宏名称为前面定义的名称,即:CFGZB

    7.点击按钮选择行、列

  • 相关阅读:
    poj2976 Dropping tests (01分数规划)
    bzoj5281/luogu4377 Talent Show (01分数规划+背包dp)
    bzoj5280/luogu4376 MilkingOrder (二分答案+拓扑序)
    bzoj1492/luogu4027 货币兑换 (斜率优化+cdq分治)
    [模板]树状数组
    匿名函数 python
    yield解析你要知道的源自IBM
    stackoverflow yield 帖子
    pandas 生成器,生成大数据
    pd.contact,dataframe 拼接
  • 原文地址:https://www.cnblogs.com/kk-home/p/9618829.html
Copyright © 2011-2022 走看看