`
发表于2023/8/5 10:35:31 楼主 
头像 等级:初学者
积分:0
财富值:2.0
身份:普通用户
有 100 多个  excel工作簿,每个工作簿里面都有一列销售金额。要怎么做才可以把 100 多个表格里各自的销售金额 统计到一张新的表格里:包含对应的工作簿名称,对应销售金额合计数
目前只能一个一个打开工作簿,手动把销售金额这一列 拉一下合计数写在表格内。效率太低,有没有什么更好的办法呀。可以批量输出
我的个性签名
发表于 2023/8/5 22:12:16   
头像 等级:学有小成
积分:30
财富值:2
身份:普通用户

还是写VBA吧,100个表格文件都放在同一个文件夹,然后遍历文件夹每一个表格文件的每一个sheet,并获取活动sheet的名称,然后对应于每一个sheet,获取相应列的销售金额总数,存储在数组里,最后遍历完了,再将数组数据写在新表格里就行,前提是这100多个数据都在相同位置,如果不在,还得写循环进行数据查找。

数据不要读一个就写一个到新表格,尽量用数组,否则速度很低。

我的个性签名
发表于 2023/8/5 22:16:17   
头像 等级:学有小成
积分:30
财富值:2
身份:普通用户
如果表格文件的名称和列数据都是有规律的,也可以用indirect来写组合调用函数,麻烦的是这个函数必须把引用文件打开才有效,index是可以不用打开,但是我目前没法写出来。这100个文件全部打开,也得耗用不少内存,可能会卡死
我的个性签名
发表于 2023/8/5 22:18:05   
头像 等级:学有小成
积分:30
财富值:2
身份:普通用户
也可以用方方格子把各sheet导入到同一个工作簿,再用indirect写组合调用函数,这倒是省事不少,但前提是文件名和sheet名以及数据列都是有规律的
我的个性签名
发表于 2023/8/5 22:21:48   
头像 等级:学有小成
积分:30
财富值:2
身份:普通用户
方方格子有excel汇总大师,但我没用过,其中一个功能就是把各文件的同位置数据提取到同一个表,可以试试,行的话就是目前最简单的方法
我的个性签名
发表于 2023/8/7 9:16:47   
头像 等级:传说级人物
积分:2532
财富值:6
身份:系统管理员
汇总大师使用教程http://www.ffcell.com/WenKu/article.aspx?id=411
方方格子安装教程http://www.ffcell.com/WenKu/article.aspx?id=376
发表于 2023/8/20 9:02:55   
头像 等级:学有小成
积分:23
财富值:2
身份:普通用户
要批量统计多个工作簿中的销售金额并输出到一个新的表格中,可以使用VBA宏来实现。以下是一个示例的VBA代码,可以帮助你完成这个任务:

1. 打开一个新的Excel工作簿,按下Alt + F11打开VBA编辑器。
2. 在VBA编辑器中,插入一个新的模块。右键点击项目资源管理器中的"VBAProject",选择"插入",然后选择"模块"。
3. 在新的模块中,复制粘贴以下VBA代码:

```vba
Sub 统计销售金额()
    Dim FolderPath As String
    Dim FileName As String
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim TotalSales As Double
    Dim OutputRow As Long
    
    ' 设置文件夹路径
    FolderPath = "你的文件夹路径"
    
    ' 设置输出表格的起始行数
    OutputRow = 2
    
    ' 打开一个新的工作簿作为输出表格
    Set wb = Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ' 遍历文件夹中的每个工作簿
    FileName = Dir(FolderPath & "\*.xlsx") ' 可以根据需要修改文件类型
    Do While FileName <> ""
        ' 打开工作簿
        Set wb = Workbooks.Open(FolderPath & "\" & FileName)
        
        ' 获取销售金额列的合计数
        TotalSales = Application.WorksheetFunction.Sum(wb.Sheets(1).Range("A:A")) ' 假设销售金额列在A列
        
        ' 将工作簿名称和销售金额合计数写入输出表格
        ws.Cells(OutputRow, 1).Value = FileName
        ws.Cells(OutputRow, 2).Value = TotalSales
        
        ' 关闭工作簿
        wb.Close SaveChanges:=False
        
        ' 移动到下一行
        OutputRow = OutputRow + 1
        
        ' 获取下一个文件名
        FileName = Dir
    Loop
    
    ' 调整输出表格的列宽
    ws.Columns("A:B").AutoFit
End Sub
```

4. 在代码中的`FolderPath = "你的文件夹路径"`处,将路径修改为包含这些工作簿的文件夹的实际路径。
5. 运行宏。按下F5或点击VBA编辑器工具栏上的运行按钮。

这个宏将按照指定的文件夹路径,遍历文件夹中的所有工作簿,并统计每个工作簿中销售金额列的合计数。然后,将工作簿名称和销售金额合计数输出到新的工作簿的第一个工作表中。

请注意,这个示例假设销售金额列在每个工作簿的A列。如果销售金额列在其他列,你需要相应地修改代码中的`Range("A:A")`为相应的列范围。另外,你还可以根据需要进行其他的自定义修改,如输出表格的格式等。
敬天爱人,成人达已

快速回复

目前不允许游客发表,请 登录 注册 后再发贴。