ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 我是小黑屋

[求助] 多工作簿数据汇总指定条件的数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-3-16 10:46 来自手机 | 显示全部楼层
河阳小子 发表于 2017-3-16 10:20
老师,我用之前那个案例修改了下,当然实际应用中不止这些簿和表,量很大。所以我把它们修改成实际应用中 ...

好,只能晚上弄好给你。

TA的精华主题

TA的得分主题

发表于 2017-3-18 17:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
河阳小子 发表于 2017-3-16 10:20
老师,我用之前那个案例修改了下,当然实际应用中不止这些簿和表,量很大。所以我把它们修改成实际应用中 ...

你这个比较复杂,要用递归的方法合并数据。

类似案例0316.rar

50.23 KB, 下载次数: 65

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-20 11:44 | 显示全部楼层
lsc900707 发表于 2017-3-18 17:54
你这个比较复杂,要用递归的方法合并数据。

谢谢老师,你编写的这个宏太强大了,比之前的宏模版强大了很多很多,跪拜呀!!!只是再麻烦一下,这个宏代码能不能灵活修改成想汇总的列(实际工作中可能会汇总其他列),比如修改成汇总E列的高中文化程度或汇总H列的农民工。我试着修改了下代码,但是总调试不正确,求大神再赐教一下,万万分的感谢!!!!!!你原先编写的统计性别的宏代码如下:
Dim sh
Sub 按钮2_Click()
    Application.ScreenUpdating = False
    Set fso = CreateObject("scripting.filesystemobject")
    ActiveSheet.UsedRange.Offset(2).ClearContents
    Set sh = ActiveSheet
    For Each fd In fso.getfolder(ThisWorkbook.Path).subfolders
        Getfd (fd)
    Next fd
    For i = ActiveSheet.Cells(Rows.Count, 1).End(3).Row To 3 Step -1
        If Cells(i, 3) = "女" Then Rows(i).Delete
    Next
    Application.ScreenUpdating = True
End Sub
Sub Getfd(ByVal pth)
    Set fso = CreateObject("scripting.filesystemobject")
    Set ff = fso.getfolder(pth)
    For Each f In ff.Files
        With Workbooks.Open(f)
            For Each sht In .Sheets
                sht.UsedRange.Offset(2).Copy sh.Cells(sh.Rows.Count, 1).End(3).Offset(1)
               
            Next sht
            .Close False
        End With
    Next f
    For Each fd In ff.subfolders
        Getfd (fd)
    Next fd
End Sub


TA的精华主题

TA的得分主题

发表于 2017-3-20 19:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 lsc900707 于 2017-3-20 19:22 编辑
河阳小子 发表于 2017-3-20 11:44
谢谢老师,你编写的这个宏太强大了,比之前的宏模版强大了很多很多,跪拜呀!!!只是再麻烦一下,这个宏 ...

汇总是全部汇总过来的,只是把不符合条件的删除了,你要更换条件汇总时,修改下面的语句即可:
For i = ActiveSheet.Cells(Rows.Count, 1).End(3).Row To 3 Step -1
        If Cells(i, 3) = "女" Then Rows(i).Delete
Next



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-21 10:37 | 显示全部楼层
lsc900707 发表于 2017-3-20 19:20
汇总是全部汇总过来的,只是把不符合条件的删除了,你要更换条件汇总时,修改下面的语句即可:
For i = ...

谢谢老师,原来是这么个原理,与之前那个是反向的呀,但各有各的用途,我再好好消化下,真心谢谢老师。麻烦了这么久,学到了很多东西,真有点不好意思。最后的最后,烦请老师再帮忙修改下之前那个汇总农民工的宏,要求是汇总整行,因为实际应用中行内容长短不一,有的很长,有的很短,现在的只能汇总1-9列的内容,如果增加过列内容就不会汇总后面部分的了,我自己是宏小白,麻烦老师再帮忙修改一下。附件如下:

有时汇总数据的列长短不一,修改为整行汇总.rar

40.17 KB, 下载次数: 43

TA的精华主题

TA的得分主题

发表于 2017-3-21 10:51 来自手机 | 显示全部楼层
河阳小子 发表于 2017-3-21 10:37
谢谢老师,原来是这么个原理,与之前那个是反向的呀,但各有各的用途,我再好好消化下,真心谢谢老师。麻 ...

哦,这个超简单,晚上回复你。

TA的精华主题

TA的得分主题

发表于 2017-3-21 11:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lsc900707 发表于 2017-3-21 10:51
哦,这个超简单,晚上回复你。

谢谢大师耐心指点

TA的精华主题

TA的得分主题

发表于 2017-3-21 17:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
河阳小子 发表于 2017-3-21 10:37
谢谢老师,原来是这么个原理,与之前那个是反向的呀,但各有各的用途,我再好好消化下,真心谢谢老师。麻 ...

Option Explicit
Sub test()
Dim myPath$, MyName$, sh As Worksheet, t#
Dim Arr, brr, i&, j&, m&, n&
t = Timer
myPath = ThisWorkbook.Path & "\"
MyName = Dir(myPath & "*.xls")
Application.ScreenUpdating = False
ReDim brr(1 To 100000, 1 To 50)
Do While MyName <> ""
    If MyName <> ThisWorkbook.Name Then
        n = n + 1
        Set sh = GetObject(myPath & MyName).Sheets("Sheet1")
            Arr = sh.[A1].CurrentRegion
            Workbooks(MyName).Close False
            For i = 3 To UBound(Arr)
                If Arr(i, 8) Like "农民工*" Then
                    m = m + 1
                    For j = 1 To  UBound(Arr,2)
                        brr(m, j) = Arr(i, j)
                    Next
                End If
            Next
      End If
      MyName = Dir
Loop
Set sh = Nothing
With Sheet1
     .Rows("1:3000").ClearContents
     .[A1].Resize(2, UBound(Arr, 2)).Value = Arr
     .[a3].Resize(m, UBound(brr, 2)).Value = brr
End With
Application.ScreenUpdating = True
MsgBox "汇总完成!汇总了:" & n & "个工作表;共有:" & m & "行数据。" & vbCr & "用时:" & Format(Timer - t, "0.00") & "秒", vbInformation
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-21 23:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lsc900707 于 2017-3-22 17:15 编辑
lsc900707 发表于 2017-3-21 10:51
哦,这个超简单,晚上回复你。
  1. <div class="blockcode"><blockquote>Option Explicit
  2. Sub test()
  3. Dim myPath$, MyName$, sh As Worksheet, t#
  4. Dim Arr, brr, i&, j&, m&, n&
  5. t = Timer
  6. myPath = ThisWorkbook.Path & ""
  7. MyName = Dir(myPath & "*.xls")
  8. Application.ScreenUpdating = False
  9. ReDim brr(1 To 100000, 1 To 50)
  10. Do While MyName <> ""
  11.     If MyName <> ThisWorkbook.Name Then
  12.         n = n + 1
  13.         Set sh = GetObject(myPath & MyName).Sheets("Sheet1")
  14.             Arr = sh.[A1].CurrentRegion
  15.             Workbooks(MyName).Close False
  16.             For i = 3 To UBound(Arr)
  17.                 If Arr(i, 8) Like "农民工*" Then
  18.                     m = m + 1
  19.                     For j = 1 To  UBound(Arr,2)
  20.                         brr(m, j) = Arr(i, j)
  21.                     Next
  22.                 End If
  23.             Next
  24.       End If
  25.       MyName = Dir
  26. Loop
  27. Set sh = Nothing
  28. With Sheet1
  29.      .Rows("1:3000").ClearContents
  30.      .[A1].Resize(2, UBound(Arr, 2)).Value = Arr
  31.      .[a3].Resize(m, UBound(brr, 2)).Value = brr
  32. End With
  33. Application.ScreenUpdating = True
  34. MsgBox "汇总完成!汇总了:" & n & "个工作表;共有:" & m & "行数据。" & vbCr & "用时:" & Format(Timer - t, "0.00") & "秒", vbInformation
  35. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-3-22 10:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lsc900707 发表于 2017-3-21 17:00
Option Explicit
Sub test()
Dim myPath$, MyName$, sh As Worksheet, t#

谢谢老师,真是太好用了,跪谢!跪谢!跪谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 05:57 , Processed in 0.045177 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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