Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2996|回复: 7

vba按字典多条件统计分组班级平均分

[复制链接]
发表于 2015-7-1 08:39 | 显示全部楼层 |阅读模式
各位大侠,我这里有个表,要求在后面的统计表中,按组别把班级信息放入相应的组别统计表中,然后统计班级平均分。
我是想用字典方法去查找,可是字典中的2列(组别,班级),我不知道要怎么用,请大侠指导。万分感谢!!

班级平均分统计(按组别).zip

41.86 KB, 下载次数: 5

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-7-1 09:43 | 显示全部楼层
建议去学习一下,东拼西凑的不适合用于工作
回复

使用道具 举报

发表于 2015-7-1 10:21 | 显示全部楼层
  1. Sub tt()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Set d1 = CreateObject("scripting.dictionary")
  4.     arr = [a1].CurrentRegion
  5.     For i = 3 To UBound(arr)
  6.         x = arr(i, 3) & "," & arr(i, 4)     '组别+班级为key
  7.         If arr(i, 5) > 0 Then
  8.             d(x) = d(x) + 1
  9.             d1(x) = d1(x) + arr(i, 5)
  10.         End If
  11.     Next
  12.     dk = d.keys
  13.     ReDim brr(1 To UBound(dk), 1 To 15)
  14.     Dim r(1 To 3)
  15.     For i = 0 To UBound(dk)
  16.         x = dk(i)
  17.         xrr = Split(x, ",")
  18.         zb = xrr(0)
  19.         k = IIf(zb = "1组", 1, IIf(zb = "2组", 2, 3))
  20.         c = IIf(zb = "1组", 1, IIf(zb = "2组", 6, 11))
  21.         r(k) = r(k) + 1
  22.         brr(r(k), c) = zb
  23.         brr(r(k), c + 1) = xrr(1)
  24.         If d(x) > 0 Then brr(r(k), c + 2) = d1(x) / d(x)
  25.     Next
  26.     [g4].Resize(UBound(brr), UBound(brr, 2)) = brr
  27.     [j4].Resize(r(1)).Formula = "=rank(rc[-1],r4c9:r" & 3 + r(1) & "c9)"
  28.     [o4].Resize(r(2)).Formula = "=rank(rc[-1],r4c14:r" & 3 + r(2) & "c14)"
  29.     [t4].Resize(r(3)).Formula = "=rank(rc[-1],r4c19:r" & 3 + r(3) & "c19)"
  30. End Sub
复制代码
回复

使用道具 举报

发表于 2015-7-1 10:22 | 显示全部楼层
请看附件。

班级平均分统计(按组别).rar

40.95 KB, 下载次数: 17

回复

使用道具 举报

 楼主| 发表于 2015-7-1 16:18 | 显示全部楼层
grf1973 发表于 2015-7-1 10:21

老师:代码IIf(zb = "1组", 1, IIf(zb = "2组", 2, 3))
IIf(zb = "1组", 1, IIf(zb = "2组",6, 11))
第二个参数1和2,6    第三个参数3和11是什么意思呀?
回复

使用道具 举报

发表于 2015-7-1 16:41 | 显示全部楼层
相对于显示的位置。用数组r()控制显示的行位置,用c控制显示的列位置。当组别是“1组”时,显示位置为(r(1),1),当组别是“2组”时,显示位置为(r(2),6),当组别是其他时,显示位置为(r(3),11)
回复

使用道具 举报

发表于 2015-7-1 16:43 | 显示全部楼层
上面的r()和c都是相对位置,不是绝对的行、列数。
回复

使用道具 举报

 楼主| 发表于 2015-7-1 17:57 | 显示全部楼层
grf1973 发表于 2015-7-1 16:43
上面的r()和c都是相对位置,不是绝对的行、列数。

明白了,谢谢老师的指导
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 07:28 , Processed in 0.428626 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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