ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 各位老师们帮帮忙,多种条件汇总数据

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-26 11:49 | 显示全部楼层

老师好,刚看了代码是可以满足需求的,刚刚又得了新的数据模板跟前面的模板相差很大,修改了几次代码都没有成功,还要在麻烦老师帮忙修改一下,谢谢

跨表汇总.zip

52.16 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2024-11-26 12:35 | 显示全部楼层
冰叶雕翎 发表于 2024-11-26 11:49
老师好,刚看了代码是可以满足需求的,刚刚又得了新的数据模板跟前面的模板相差很大,修改了几次代码都没 ...

源数据变化很大啊。

跨表统计.zip

56.13 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2024-11-26 12:36 | 显示全部楼层
源数据变化大,代码改一下吧。

  1. Sub ykcbf()   '//2024.11.26     月份数据导入
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Set fso = CreateObject("Scripting.FileSystemObject")
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     Set ws = ThisWorkbook
  7.     p = ThisWorkbook.Path & ""
  8.     bt = [{"制卡成功","已采集未提交制卡","卡商开户中","卡商开户失败","卡商制卡中"}]
  9.     Dim tm: tm = Timer
  10.     For Each f In fso.GetFolder(p).Files
  11.         If Val(f.Name) Then
  12.             d.RemoveAll
  13.             fn = Val(Mid(fso.GetBaseName(f), 5, 2)) & "月"
  14.             ReDim brr(1 To 10000, 1 To 100)
  15.             m = 0
  16.             Set wb = Workbooks.Open(f, 0)
  17.             arr = wb.Sheets(1).UsedRange
  18.             wb.Close 0
  19.             For i = 2 To UBound(arr)
  20.                 If arr(i, 10) <> Empty Then
  21.                     s = arr(i, 10)
  22.                     p1 = IIf(arr(i, 17) = "3.0", 1, 0)
  23.                     p2 = IIf(arr(i, 17) = "2.0", 1, 0)
  24.                     p3 = IIf(arr(i, 18) = "已签发", 1, 0)
  25.                     Select Case Trim(arr(i, 14))
  26.                         Case Is = bt(1)
  27.                             c = 3
  28.                         Case Is = bt(2)
  29.                             c = 4
  30.                         Case Is = bt(3)
  31.                             c = 5
  32.                         Case Is = bt(4)
  33.                             c = 6
  34.                         Case Is = bt(5)
  35.                             c = 7
  36.                     End Select
  37.                     If Not d.exists(s) Then
  38.                         m = m + 1
  39.                         d(s) = m
  40.                         brr(m, 1) = s
  41.                         brr(m, c) = p1
  42.                         brr(m, 8) = p2
  43.                         brr(m, 9) = p3
  44.                     Else
  45.                         r = d(s)
  46.                         brr(r, c) = brr(r, c) + p1
  47.                         brr(r, 8) = brr(r, 8) + p2
  48.                         brr(r, 9) = brr(r, 9) + p3
  49.                     End If
  50.                 End If
  51.             Next
  52.             With ws.Sheets(fn)
  53.                 .UsedRange.Offset(3).ClearContents
  54.                 .[a4].Resize(m, 9) = brr
  55.                 .[a4].Resize(m, 9).Borders.LineStyle = 1
  56.                 For i = 4 To m + 3
  57.                     .Cells(i, 2) = Application.Sum(.Cells(i, 3).Resize(, 6))
  58.                 Next
  59.                 .Cells(m + 4, 1) = "合计"
  60.                 For j = 2 To 9
  61.                     .Cells(m + 4, j) = Application.Sum(.Cells(4, j).Resize(m))
  62.                 Next
  63.             End With
  64.         End If
  65.     Next f
  66.     Set d = Nothing
  67.     Set d1 = Nothing
  68.     Application.ScreenUpdating = True
  69.     MsgBox "共用时:" & Format(Timer - tm) & "秒!"
  70. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-11-26 14:51 | 显示全部楼层
我也来湊下热闹。。。
区域汇总表中有三个按钮,第一个按钮生成各个月份的汇总表(一个月一个sheet),第二个按钮按区域汇总,汇总到区域汇总表中。第三个按钮按月份汇总,汇总到月份汇总表中。请查看附件。
image.png
image.png
image.png
image.png
image.png

跨表统计.7z

47.88 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2024-11-26 16:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
PQ+PivotTable参考
微信截图_20241126164356.png

CrossTableSummary.zip

61.61 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2024-11-26 17:25 | 显示全部楼层
本帖最后由 z865593849 于 2024-11-26 17:34 编辑
冰叶雕翎 发表于 2024-11-26 10:31
老师好,脚本在运行的时候有报错,错误项为【conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ...
你没装accessdatabaseengine,用OFFICE

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-27 08:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 冰叶雕翎 于 2024-11-27 08:46 编辑

老师好,你给我方法是可以,但是每个月的数据很多,少的有70-80万条,到了10月后有时是一个月会出现两个数据表,这样单个表无法承载数据的,另外但个月的数据量大时会出现两个表(例如:工作簿名称20241103_1,20241103_2里面的子表20241103),还能修改吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-27 08:24 | 显示全部楼层
z865593849 发表于 2024-11-26 17:25
你没装accessdatabaseengine,用OFFICE

好的,谢谢老师

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-27 08:40 | 显示全部楼层
ykcbf1100 发表于 2024-11-26 12:36
源数据变化大,代码改一下吧。

老师好,运行代码是有报错,还有刚同事说从这个月开始的数据量增大导出时会变成两个表(例如:工作簿名称20241103_1,20241103_2里面的子表20241103)这样代码需要修改吗
微信截图_20241127082606.png
微信截图_20241127082615.png

TA的精华主题

TA的得分主题

发表于 2024-11-27 09:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
冰叶雕翎 发表于 2024-11-27 08:40
老师好,运行代码是有报错,还有刚同事说从这个月开始的数据量增大导出时会变成两个表(例如:工作簿名称 ...

应该需要修改吧,你源文件名都变了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 04:55 , Processed in 0.037695 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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