ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 恳请大神们帮忙看下这个统计的能否用vba算出来

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-31 23:23 | 显示全部楼层 |阅读模式
本帖最后由 qiongmei6 于 2024-1-31 23:28 编辑

我附件上想求得一个代码,当他执行的时候,他会根据“报表表格中的ax列和“报表”表格中ay2:ba2的内容统计”“工资汇总”表格内b3:ab1000列,属于办公室的改制职工、合同工、聘用工每个各有多少人,显示在“报表”表格ay:ba列,目前报表的ay:ba列就是我希望代码执行后得到的最后结果,之前是用数组公式来做,但是表格中类似这种数组公式太多,导致表格1小时都打不开,所以想换成vba模式来做,看能不能加快表格运作,谢谢各位大神的帮忙

汇总.rar

21.21 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2024-2-1 07:22 | 显示全部楼层
字典嵌套一下就行

汇总.rar

27.62 KB, 下载次数: 13

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-1 07:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 按钮1_Click()
    Set d = CreateObject("scripting.dictionary")
    arr = Sheets("工资汇总").UsedRange
    For j = 3 To UBound(arr)
        If Not d.exists(arr(j, 2)) Then
            Set d(arr(j, 2)) = CreateObject("scripting.dictionary")
        End If
        d(arr(j, 2))(arr(j, 14)) = d(arr(j, 2))(arr(j, 14)) + 1
    Next j
    arr = Sheets("报表").[ax1].Resize(d.Count + 2, 4)
    For j = 0 To d.Count - 1
        k = d.keys()(j)
        arr(j + 3, 1) = k
        For i = 2 To 4
            arr(j + 3, i) = d(k)(arr(2, i))
        Next i
    Next j
    Sheets("报表").[ax1].Resize(d.Count + 2, 4) = arr
End Sub

TA的精华主题

TA的得分主题

发表于 2024-2-1 07:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
汇总.zip (27.67 KB, 下载次数: 18)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-1 10:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

汇总.rar

25.28 KB, 下载次数: 11

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-1 13:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
唉,是我描述的问题,大家都不理解我的想法,导致各位大神都理解错我的意思了,我想的代码是,根据“报表”表格内ay1的内容和ax列的单位,找出“工资汇总”表格内属于ay1内容的改制单位、合同工、聘用工多少人,例如:“报表”表格内ay1的内容是办公室,ax列的单位有上海和北京,那么希望执行代码后在“报表”表格内他显示,“工资汇总”属于上海的办公室的人员中改制单位有1个,合同工有1个,聘用工1个,在北京中合同工有1个,谢谢shiruiqiang,liulang0808,saghj,能否麻烦各位大神们再帮忙修改下。

TA的精华主题

TA的得分主题

发表于 2024-2-1 15:52 | 显示全部楼层
image.png image.png
你好好给大家描述一下,怎么个对应法?工种里面办公室怎么对应聘用、正式工、合同工的?

TA的精华主题

TA的得分主题

发表于 2024-2-1 16:55 | 显示全部楼层
在 liulang0808 大佬的基础上改了一下下,应该是这样吧

汇总.zip

29.95 KB, 下载次数: 7

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-2 08:09 | 显示全部楼层
是这样吗?

汇总.rar

26.14 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-2 10:45 | 显示全部楼层
  1. Sub test()
  2. arr = Sheets("工资汇总").UsedRange
  3. With Sheets("报表")
  4.     brr = .[ay1].CurrentRegion
  5.     For i = 3 To UBound(brr)
  6.         For j = 3 To UBound(arr)
  7.             If arr(j, 3) = brr(1, 2) And arr(j, 2) = brr(i, 1) Then
  8.             For k = 2 To 4
  9.                 If arr(j, 14) = brr(2, k) Then brr(i, k) = brr(i, k) + 1
  10.             Next
  11.             End If
  12.         Next
  13.     Next
  14.     .[ay1].CurrentRegion = brr
  15. End With
  16. End Sub
复制代码

image.png

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 23:50 , Processed in 0.052729 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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