ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12773|回复: 35

[求助] 将工作簿中各表符合条件的记录汇总到一个工作表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-8-8 16:35 | 显示全部楼层 |阅读模式
各位高手,本人想请教一下问题:工作簿里面有四个表(或者更多),表1、表2、表3还有汇总表。那么我现在想把表1、表2、表3各个表里面工资金额超过2000元的员工信息“姓名、性别、部门、岗位和工资”自动汇总到“汇总表”工作表里面,或者也可以在汇总表F1和G1里面输入一个区间数据,如F1为2000元以上,G3为5000元以内。以上可以用VBA实现吗?详见附件

汇总.rar

6.75 KB, 下载次数: 60

TA的精华主题

TA的得分主题

发表于 2011-8-8 16:55 | 显示全部楼层
关于管理数据的方法请参考:

[原创]★Excel数据管理的一般规律★        http://club.excelhome.net/thread-287461-1-1.html

TA的精华主题

TA的得分主题

发表于 2011-8-8 17:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub aa()
  2. Dim arr, a%, i%, k%, h%
  3. a = Sheets.Count
  4. For i = 1 To Sheets.Count
  5. If Sheets(i).Name <> "汇总" Then
  6. With Sheets(i)
  7. arr = .Range("a2", .[e65536].End(3))
  8. End With
  9. For k = 1 To UBound(arr)
  10. h = Sheet1.Range("a65536").End(3).Row + 1
  11. If arr(k, 5) > "2000" Then
  12. Sheet1.Range("a" & h, "e" & h).Value = Sheets(i).Range("a" & k + 1, "e" & k + 1).Value
  13. h = h + 1
  14. End If
  15. Next k
  16. End If
  17. Next i
  18. End Sub
复制代码

汇总工作表.rar

11.61 KB, 下载次数: 162

TA的精华主题

TA的得分主题

发表于 2011-8-8 17:49 | 显示全部楼层
原帖由 seelookme 于 2011-8-8 16:35 发表
各位高手,本人想请教一下问题:工作簿里面有四个表(或者更多),表1、表2、表3还有汇总表。那么我现在想把表1、表2、表3各个表里面工资金额超过2000元的员工信息“姓名、性别、部门、岗位和工资”自动汇总到“汇总 ...

请测试
Sub Macro1()
    Dim cnn As Object, rs As Object, SQL$, i&
    Set cnn = CreateObject("ADODB.Connection")
    cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.FullName
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "汇总" Then
            If SQL <> "" Then SQL = SQL & " union all "
            SQL = SQL & "select * from [" & sh.Name & "$] where 工资 between " & [f1] & " and " & [g1]
        End If
    Next
    SQL = "select 姓名,性别,部门,岗位,sum(工资) as 工资 from (" & SQL & ") group by 姓名,性别,部门,岗位" '如果不是求和,把这一句去掉
    Set rs = cnn.Execute(SQL)
    ActiveSheet.UsedRange.Offset(1).ClearContents
    For i = 1 To rs.Fields.Count
        Cells(1, i) = rs.Fields(i - 1).Name
    Next
    Range("A2").CopyFromRecordset rs
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
End Sub

[ 本帖最后由 zhaogang1960 于 2011-8-9 08:48 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-8-8 18:20 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-8 19:01 | 显示全部楼层

回复 4楼 flysum2008 的帖子

谢谢你,这个可以。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-8 19:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 3楼 zhaogang1960 的帖子

可以设置把工资超过2000元的汇总到汇总表里面吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-8 18:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 5楼 longming3 的帖子

您好,请问透析表如何合并呢,我也想过用透析表,但不会设置。

TA的精华主题

TA的得分主题

发表于 2011-8-8 20:49 | 显示全部楼层
短信收到。如果更改条件为工资>2000元且工资<5000元,则将If arr(k, 5) > "2000" Then
改为If arr(k, 5) > "2000" and arr(k, 5) < "5000" Then

TA的精华主题

TA的得分主题

发表于 2011-8-8 20:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 seelookme 于 2011-8-8 19:03 发表
可以设置把工资超过2000元的汇总到汇总表里面吗?


汇总.rar (19.79 KB, 下载次数: 209)

[ 本帖最后由 zhaogang1960 于 2011-8-9 08:50 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-17 14:01 , Processed in 0.026806 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表