ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 【已解决】运用字典、数组求平均值遇到问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-28 15:47 | 显示全部楼层 |阅读模式
本帖最后由 libaoshui 于 2023-5-29 22:11 编辑

image.png

如图,在统计汇总求平均值过程遇到问题,表1为明细表,表2.1、2.2为分析表
1、表2.1-分析表中,C的平均分不显示(单元格I4),不知道为什么呢?
2、表2.2-分析表中,平均分计算均为错误,实际上这个是最终希望展现的报表格式,而不是表2.1(增加一列数据,为了方便计算)
希望高手能帮助答疑解惑,谢谢!
【问题已解决】感谢各位帮助支持!特别是@zxsea_7426提供的思路,①将数组作为字典的Items,②结果只取数组前3列。
现将代码贴出,供有需要朋友参考!
  1. Sub bb()
  2. Dim d As Object, i%, arr, a, b, c, e
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheet1.[a1].CurrentRegion
  5. Range("l2:n4") = ""
  6. For i = 2 To UBound(arr)
  7.     If Not d.exists(arr(i, 1)) Then
  8.         a = arr(i, 1)
  9.         b = arr(i, 2)                               '总分
  10.         c = arr(i, 2)                               '平均分
  11.         e = 1                                       '次数
  12.         d(arr(i, 1)) = Array(a, b, c, e)            '姓名作为Key,数组(姓名、总分、平均分、次数)作为Items
  13.     Else
  14.         a = d(arr(i, 1))(0)
  15.         b = d(arr(i, 1))(1) + arr(i, 2)              '总分累加
  16.         e = d(arr(i, 1))(3) + 1                      '次数累加
  17.         c = b / e                                    '计算平均分
  18.         d(arr(i, 1)) = Array(a, b, c, e)
  19.     End If
  20. Next
  21. [l2].Resize(d.Count, 3) = Application.Transpose(Application.Transpose(d.items))   '两次转置,取数组前3列值
  22. End Sub
复制代码



【已解决】字典数组求平均分.7z

16.81 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2023-5-28 15:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-28 16:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-5-28 16:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-5-28 16:51 | 显示全部楼层
参与一下....

字典数组求平均分.rar

16.29 KB, 下载次数: 9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-28 17:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
...........
微信截图_20230528172227.png

字典数组求平均分.rar

15.5 KB, 下载次数: 8

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-29 22:01 | 显示全部楼层

感谢答疑解惑!学习到两个知识点:
1、将数组Array(a,b,c,e)作为字典的Items,高明!
2、最终结果只取数组中部分内容,如数组共4列,只取前3列,精妙!
有个疑问点:如果最终结果取数组某一列或某几列,怎么取值呢?d.items(0)或者d.items(1,2),尝试了下好像不行吧,烦请再指教下,谢谢!

TA的精华主题

TA的得分主题

发表于 2023-5-30 09:13 | 显示全部楼层
试试。。。。。。。。。。。。。。。。。
22222.jpg

【已解决】字典数组求平均分.zip

18.24 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2023-5-30 09:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
做个记号,学习学习

TA的精华主题

TA的得分主题

发表于 2023-5-30 09:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

为什么我打开附件时提示要修复。

1

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

本版积分规则

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

GMT+8, 2024-11-16 08:29 , Processed in 0.037918 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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