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