ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 遍历汇总加求和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-17 14:51 | 显示全部楼层 |阅读模式
本人找了几个案例,堵点太多,没有搞定。希望老师们能给予帮助,多谢老师们!




在实际工作中,做了一个部分单元格保护起来的模板,保护密码是123,希望运行完宏再保护起来。

日常操作是,复制模板填写内容然后完成一张sheet表的工作,然后希望将此sheet表保存为PDF,并遍历各sheet表的部分内容汇总到一张表里,然后弹出提醒(类数据透视表):字段3对应的字段9,字段10的合计数是多少。


具体见附件!
多谢老师们帮助!

1.zip

24.77 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2022-12-17 16:20 | 显示全部楼层
为什么不直接把数据都复制粘贴或录入数据直接录入到汇总表不就可以了吗?需要分开查询的时候,再单独提取某一天录入的内容不就简单了?

TA的精华主题

TA的得分主题

发表于 2022-12-17 17:26 | 显示全部楼层
本帖最后由 chzsh 于 2022-12-17 18:26 编辑


Sub 遍历工作表()
k1 = Sheets("汇总").Range("a65536").End(xlUp).Row
If k1 > 1 Then
    Sheets("汇总").Range("a2:n" & k1).Delete
End If
For Each sh In Worksheets    '数组
    irow = Sheets("汇总").Range("a65536").End(xlUp).Row   
    If sh.Name <> "汇总" And sh.Name <> "模板" Then    '指定不参与循环的工作表名称,可一个或多个,自行增减
        sh.Range("a8:n17").Copy
        Sheets("汇总").Range("a" & irow + 1).PasteSpecial Paste:=xlPasteValues
    End If
Next
Sheets("汇总").[a1].CurrentRegion.Borders.LineStyle = 1
Call hb
End Sub


Sub hb()
Set d = CreateObject("scripting.dictionary")
With Sheets("汇总")
   r = .Cells(.Rows.Count, 1).End(3).Row
   arr = .Range("c1:j" & r)
   For i = 2 To UBound(arr)
       s = arr(i, 1)
      If Not d.exists(s) Then
        d(s) = Array(Val(arr(i, 7)), arr(i, 8))
      Else
        d(s) = Array(Val(arr(i, 7)) + d(s)(0), Val(arr(i, 8)) + d(s)(1))
      End If
   Next
End With
  k = d.keys
  t = d.items
   For i = 1 To UBound(k) + 1
        MsgBox arr(1, 1) & "     " & k(i - 1) & "     " & arr(1, 7) & "    合计   " & t(i - 1)(0) & "     " & arr(1, 8) & "    合计   " & t(i - 1)(1)
   Next
End Sub




TA的精华主题

TA的得分主题

发表于 2022-12-17 17:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 chzsh 于 2022-12-17 18:26 编辑

请试一下附件吧

遍历汇总加求和.zip

34.5 KB, 下载次数: 13

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-17 17:57 | 显示全部楼层
供参考。。。。

1.zip

34.12 KB, 下载次数: 13

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-17 18:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-12-17 18:24 | 显示全部楼层
Sub TEST()
    Dim arr, vData, i&, j&, R&, dic As Object
    Dim strTxt$, wks As Worksheet, vKey
    Application.ScreenUpdating = False
    Set dic = CreateObject("Scripting.Dictionary")
    arr = Range(Sheets("汇总").[A1], Sheets("汇总").Cells(1, Columns.Count).End(xlToLeft))
    ReDim vData(1 To 10000, 1 To UBound(arr, 2)): R = R + 1
    For i = 1 To UBound(arr, 2)
       vData(R, i) = arr(R, i)
    Next i
   
    For Each wks In Sheets
       If wks.Name Like "*-*-*" Then
          With wks
             If .ProtectContents = True Then .Unprotect (123)
               arr = .[A7].CurrentRegion
               For i = 2 To UBound(arr)
                   R = R + 1
                   For j = 1 To UBound(arr, 2)
                      vData(R, j) = arr(i, j)
                   Next j
                   vKey = vData(R, 3)
                   If Not dic.exists(vKey) Then
                      dic(vKey) = Array(vData(R, 9), vData(R, 10))
                      Else
                      dic(vKey) = Array(dic(vKey)(0) + vData(R, 9), dic(vKey)(1) + vData(R, 10))
                   End If
               Next i
             If .ProtectContents = False Then .Protect (123)
          End With
       End If
    Next
   
    Cells.Clear
    [A1].Resize(R, UBound(vData, 2)) = vData
    With [A1].CurrentRegion
        .HorizontalAlignment = xlCenter
        .Borders.LineStyle = xlContinuous
        .Rows(1).Font.Bold = True
        .EntireColumn.AutoFit
        .EntireRow.AutoFit
    End With
   
    For Each vKey In dic.keys
      strTxt = strTxt & vbCrLf & vKey & ":" & vbCrLf & vData(1, 9) & ":" & Format(dic(vKey)(0), "#,###.00") & vbCrLf & vData(1, 10) & ":" & Format(dic(vKey)(1), "#,###.00")
    Next
    strTxt = strTxt & vbCrLf & vbCrLf & "pdf文件生成在当前目录中"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\1"
    Set dic = Nothing
    Application.ScreenUpdating = True
    Beep
    MsgBox strTxt
End Sub


TA的精华主题

TA的得分主题

发表于 2022-12-17 18:26 | 显示全部楼层
请楼主参考附件。。。

新建文件夹.rar

35.49 KB, 下载次数: 15

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-19 15:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gwjkkkkk 发表于 2022-12-17 18:26
请楼主参考附件。。。

多谢帮助!我下载运行是出现错误提示。
1.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-19 15:43 | 显示全部楼层

多谢,你这个提示信息里的合计数错误,另外,宏是放在以日期命名的sheet表里的,最关键是在以日期命名的sheet表里运行宏的时候,保存为PDF的是该sheet表,不是汇总表。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 06:19 , Processed in 0.045428 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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