• [VBA]汇总多个工作簿的指定工作表到同一个工作簿的指定工作表中


    sub 汇总多个工作簿()

    Application.ScreenUpdating = False

    Dim wb As Workbook, f As String, l As String, n As String, m As String, j As Integer

        f = ThisWorkbook.Path & ""

        l = f & "*.xls"

        m = Dir(l)

        Do While m <> ""

            If m <> ThisWorkbook.Name Then

            n = f & m

            Workbooks.Open (n)

             With ThisWorkbook.activesheet

            .Range("b4:at34").ClearContents

            For i = 4 To .Range("a1").CurrentRegion.Rows.Count

            For j = 2 To .Range("a1").CurrentRegion.Columns.Count - 2 Step 3

            For Each wb In Workbooks

                If wb.Name <> ThisWorkbook.Name Then

                 aa = Left(wb.Name, InStrRev(wb.Name, ".") - 1)

                    If .Cells(2, j).Value = aa Then

                    .Cells(i, j) = Application.VLookup(.Cells(i, 1), wb.Worksheets(1).Range("a:b"), 2, 0)

                    .Cells(i, j + 1) = Application.VLookup(.Cells(i, 1), wb.Worksheets(1).Range("a:c"), 3, 0)

                        If VBA.IsNumeric(ThisWorkbook.activesheet.Cells(i, j + 1)) = False Then

                        ThisWorkbook.activesheet.Cells(i, j + 2) = 0

                        ElseIf ThisWorkbook.activesheet.Cells(i, j + 1) = 0 Then

                        ThisWorkbook.activesheet.Cells(i, j + 2) = 0

                        Else

                        ThisWorkbook.activesheet.Cells(i, j + 2) = ThisWorkbook.activesheet.Cells(i, j) / ThisWorkbook.activesheet.Cells(i, j + 1)

                        End If

                    End If

                End If

            Next

            Next

            Next

            End With

            End If

            m = Dir

        Loop

       For Each wb In Workbooks

        If wb.Name <> ThisWorkbook.Name Then

        wb.Close False

        End If

        Next

    Application.ScreenUpdating = True

    End Sub

    效果图:

    不足:

    调用excel本身的函数vlookup,数据量大的话,会导致运行速度慢,表格卡住的问题,后期优化,应用数组解决。

  • 相关阅读:
    微服务与SOA的区别
    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
    pika常见问题解答(FAQ)
    大容量类Redis存储--Pika介绍
    Beego开启热升级
    Beego框架的一条神秘日志引发的思考
    Redis的最常被问到知识点总结
    go语言的defer语句
    GO-REDIS的一些高级用法
    go使用go-redis操作redis 连接类型,pipline, 发布订阅
  • 原文地址:https://www.cnblogs.com/susuye/p/7169209.html
Copyright © 2020-2023  润新知