zoukankan      html  css  js  c++  java
  • [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,数据量大的话,会导致运行速度慢,表格卡住的问题,后期优化,应用数组解决。

  • 相关阅读:
    HttpWebRequest中的ContentType详解
    c# 创建Windows服务
    转载 Url编码
    在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。
    IE兼容模式下 SCRIPT1028: 缺少标识符、字符串或数字
    Response.ContentLength获取文件大小
    unable to instantiate activity...
    查看android-support-v4.jar引出的问题
    导入项目 R.java没有
    初识python: 局部变量、全局变量
  • 原文地址:https://www.cnblogs.com/susuye/p/7169209.html
Copyright © 2011-2022 走看看