送心意

成蹊老师

职称注册会计师,初级会计师,税务师,中级会计师

2019-12-04 21:37

点击【开发工具】-【Visual Basic】或者Alt+F11的快捷键进入VBE编辑界面。
插入一个新的模块
粘贴下列代码在模块中:

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

        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
插入一个控件按钮,并指定宏到刚才插入的模块代码。
点击插入的按钮控件,根据提示选择标题行和要拆分的列字段

上传图片  
相关问题讨论
你好,如果是在职职工,签订劳动合同的,可以作为工资薪金直接发放。如果不是在职职工,不参加社会保险的,或者说是兼职的,那就要作为劳务报酬,需要开发票
2020-04-26 06:36:07
点击【开发工具】-【Visual Basic】或者Alt+F11的快捷键进入VBE编辑界面。 插入一个新的模块 粘贴下列代码在模块中: 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&amp;, Myr&amp;, Arr, num&amp; Dim d, k For i = Sheets.Count To 1 Step -1 If Sheets(i).Name &lt;&gt; 数据源 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= &amp; ThisWorkbook.FullName Sql = select * from [数据源$] where &amp; title &amp; = &amp; k(i) &amp; 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 插入一个控件按钮,并指定宏到刚才插入的模块代码。 点击插入的按钮控件,根据提示选择标题行和要拆分的列字段
2019-12-04 21:37:38
这种情况,通过财务人员与业务的稽核关系管理,仔细审核资金的进出,完全可以避免。
2019-07-13 10:52:37
您好,一般编制工资表,与工资一起发比较好。
2017-03-13 21:57:49
你好!这个你可以直接去到银行问。他们会有人跟你联系。
2019-10-28 13:55:36
还没有符合您的答案?立即在线咨询老师 免费咨询老师
精选问题
相似问题
举报
取消
确定
请完成实名认证

应网络实名制要求,完成实名认证后才可以发表文章视频等内容,以保护账号安全。 (点击去认证)

取消
确定
加载中...