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

这段VBA代码演示了如何汇总多个Excel工作簿中的指定工作表内容到一个工作簿的指定工作表中。通过遍历工作簿并使用VLOOKUP函数进行数据匹配,将值填充到目标工作表。尽管这种方法可能在处理大量数据时导致运行速度变慢,作者指出可以考虑使用数组来优化这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.Co

VBA (Visual Basic for Applications) 中,如果你想将多个Excel工作簿中的特定数据汇总到一个单独的工作表,你可以编写一个宏来完成这个任务。以下是一个简单的步骤描述: 1. **创建一个新的空白工作簿**:作为汇总的目标工作表。 2. **打开需要汇总工作簿列表**:可以存储在一个数组或者集合里,每个元素代表一个工作簿路径。 3. **循环遍历工作簿列表**: - 使用 `Application.Workbooks.Open` 方法打开每个工作簿。 - 确定你要汇总的数据范围。例如,假设所有工作簿的特定数据都在A1区域。 4. **读取数据**: - 对于每个工作簿,获取对应数据区域的值,例如 `Worksheets("Sheet1").Range("A1")`。 5. **汇总数据**: - 将数据添加到目标工作簿的新行中。这通常涉及到选择目标单元格、设置值然后移动到下一行。比如使用 `.End(xlDown).Offset(1, 0)` 来找到下一个空行并输入数据。 6. **关闭不需要的工作簿**: - 当从当前工作簿读取完数据后,使用 `.Close SaveChanges:=False` 关闭它(`SaveChanges` 参数设为 False 可避免自动保存更改)。 7. **结束循环**: - 循环结束后,记得检查是否所有数据都已添加到目标工作表。 下面是一个基础的VBA示例代码片段,但这只是一个大概的框架,你需要根据实际情况调整变量名和具体的文件路径: ```vba Sub SummarizeData() Dim wbSource As Workbook Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim DataRange As Range Dim SourceFile() As String ' 存储工作簿路径的数组 ' 初始化目标工作表和数据范围 Set wsTarget = ThisWorkbook.Sheets("Summary") Set DataRange = wsTarget.Range("A1") ' 设置工作簿路径数组 SourceFile = Array("C:\Path\To\Workbook1.xlsx", "C:\Path\To\Workbook2.xlsx") ' 替换为实际路径 For Each src In SourceFile Set wbSource = Workbooks.Open(src) ' 获取源工作簿数据区域 Set wsSource = wbSource.Sheets("Sheet1") DataRange.Value = wsSource.Range("A1").Value ' 这里假设数据在A1 ' 汇总数据到目标位置 ' 数据Range.Value = ... # 根据需要更新这里 ' 关闭工作簿 wbSource.Close SaveChanges := False Next src End Sub ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值