ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 汇总表增加多一个部门,如何修改VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-4 23:49 | 显示全部楼层 |阅读模式
本帖最后由 wzd028 于 2023-4-4 23:51 编辑

在汇总表增加多一个部门(N2),如何修改VBA才能汇总各部门数据,请老师注明在哪里修改,我也可以学习,谢谢!

    捕获003.JPG


Sub test()  '汇总
  Dim arr, xD, Brr(1 To 2000, 1 To 15), A$, A1$, fs, f, fc, f1
  Dim n%, m%, T$, DP%, i&, j%
  Application.ScreenUpdating = False: Application.DisplayAlerts = False
  Set xD = CreateObject("Scripting.Dictionary")
  Set fs = CreateObject("Scripting.FileSystemObject")
  ActiveSheet.Pictures.Delete
  A = ThisWorkbook.Path: Tm = Timer
  Set f = fs.GetFolder(A): Set fc = f.Files
  For Each f1 In fc
    A1 = f1.Name: If InStr(A1, "~") Then GoTo 97
    If InStr(A1, ThisWorkbook.Name) Then GoTo 97
    With Workbooks.Open(f1.Path)
      arr = Sheets(1).[a2].CurrentRegion
      For Each PIC In .Sheets(1).Pictures
        W = PIC.TopLeftCell.Row
        If W > 2 Then
          PIC.Name = .Sheets(1).Cells(W, "C").Value
          PIC.Copy
          ThisWorkbook.Activate
          Range("V5").Select
          ActiveSheet.Paste
        End If
      Next
      .Close
    End With
    BM = Array("后勤组", "膳食组", "医养服务部", "财务部", "仓库", "品质客服部",  "医疗部", "综合办公室")
    For K = 0 To UBound(BM)
      If InStr(A1, BM(K)) Then DP = 8 + K: Exit For
    Next
    For i = 3 To UBound(arr)
      T = arr(i, 3) & arr(i, 3): If T = "" Then GoTo 97
      If xD.exists(T) Then
        m = xD(T): Brr(m, DP) = arr(i, 10): Brr(m, 15) = Brr(m, 15) + arr(i, 10)
        If arr(i, 12) <> "" Then
          If Brr(m, 7) = "" Then
            Brr(m, 7) = arr(1, 7) & ":" & arr(i, 12)
          Else
            Brr(m, 7) = Brr(m, 7) & " ; " & arr(1, 7) & ":" & arr(i, 12)
          End If
        End If
      Else
        n = n + 1: xD(T) = n: Brr(n, 1) = n
        For j = 2 To 6: Brr(n, j) = arr(i, j): Next
          If arr(i, 12) <> "" Then Brr(n, 7) = arr(1, 7) & ":" & arr(i, 12)
          Brr(n, DP) = arr(i, 10): Brr(n, 15) = arr(i, 10)
        End If
96:                                     Next
97:                                 Next
        With Sheets(1)
          .[A1].CurrentRegion.Offset(3, 0).ClearContents
          If n > 0 Then .[a4].Resize(n, 15) = Brr
          For Each PIC In .Pictures
            NM = PIC.Name
            W = Range("C:C").Find(NM).Row
            PIC.Cut
            Cells(W, "V").Select
            ActiveSheet.Paste
          Next
          .[A1].Select
        End With
        MsgBox "用时:    " & Round(Timer - Tm, 2) & "秒"
        Set fs = Nothing: Set f = Nothing: Set fc = Nothing
        Application.ScreenUpdating = True: Application.DisplayAlerts = True
End Sub

TA的精华主题

TA的得分主题

发表于 2023-4-5 12:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
只有这些不能晓得如何添加,最好能数据的模拟表上传.

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-5 13:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wzd028 于 2023-4-6 10:41 编辑
xunanming 发表于 2023-4-5 12:54
只有这些不能晓得如何添加,最好能数据的模拟表上传.

谢谢老师百忙中帮我解决问题,现已上传附件,请说明在哪里修改,以便日后有增加部门的时候自己修改,谢谢!


TA的精华主题

TA的得分主题

发表于 2023-4-5 13:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
应该是不能简单的直接加新部门,可以直接替换不用的部门

TA的精华主题

TA的得分主题

发表于 2023-4-5 15:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wzd028 发表于 2023-4-5 13:14
谢谢老师百忙中帮我解决问题,现已上传附件,请说明在哪里修改,以便日后有增加部门的时候自己修改,谢谢 ...

原代码排版有点乱,加上本人水平有限,费了一点时间进行修改,现分享如下:

比如新插入了一个“保安部”,分五个步骤,如图所示。如若有用,加分鼓励一下。

屏幕截图 2023-04-05 144619.jpg

屏幕截图 2023-04-05 145243.jpg



屏幕截图 2023-04-05 144800.jpg

屏幕截图 2023-04-05 144841.jpg


屏幕截图 2023-04-05 145040.jpg



屏幕截图 2023-04-05 145147.jpg




评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-5 17:57 | 显示全部楼层
吴中泉 发表于 2023-4-5 15:34
原代码排版有点乱,加上本人水平有限,费了一点时间进行修改,现分享如下:

比如新插入了一个“保安部 ...

谢谢老师帮助,写的非常详细,太有用了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 08:23 , Processed in 0.044137 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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