Excel精英培训网

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

怎么样通过vba实现这样的汇总?

[复制链接]
发表于 2012-5-24 18:57 | 显示全部楼层 |阅读模式
如附件所示,我想得到每个班级所对应变量1到变量8的均值,我只会通过字典做两列的数据,像这种多列的数据我就不会做了,请老师指点一下 谢谢啦

汇总.zip

6.92 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-5-24 19:17 | 显示全部楼层
最终效果是怎么样的?否则无从下手……
回复

使用道具 举报

发表于 2012-5-24 19:28 | 显示全部楼层
这种格式为什么不用数据透视表呢,非要VBA!
回复

使用道具 举报

发表于 2012-5-24 19:47 | 显示全部楼层
  1. Sub 汇总求平均值()
  2.     Dim ar, br(1 To 100, 1 To 9), cr(1 To 100)
  3.     Dim d As Object
  4.     Dim i As Integer, j As Integer, k As Integer, s As Integer
  5.     Set d = CreateObject("scripting.dictionary")
  6.     ar = Range("a1").CurrentRegion
  7.     For i = 2 To UBound(ar)
  8.         If d.exists(ar(i, 1)) Then
  9.             s = d(ar(i, 1))
  10.             cr(s) = cr(s) + 1
  11.             For j = 2 To 9
  12.                 br(s, j) = br(s, j) + ar(i, j)
  13.             Next
  14.         Else
  15.             k = k + 1
  16.             d(ar(i, 1)) = k
  17.             cr(k) = 1
  18.             For j = 1 To 9
  19.                 br(k, j) = ar(i, j)
  20.             Next
  21.         End If
  22.     Next
  23.     For i = 1 To k
  24.         For j = 2 To 9
  25.             br(i, j) = br(i, j) / cr(i)
  26.         Next
  27.     Next
  28.     Range("k1").Resize(1, 9) = Range("a1:i1").Value
  29.     Range("k2").Resize(k, 9) = br
  30. End Sub
复制代码
回复

使用道具 举报

发表于 2012-5-24 20:36 | 显示全部楼层
最简单的方式: 汇总.zip (15.77 KB, 下载次数: 10)
回复

使用道具 举报

 楼主| 发表于 2012-5-25 15:28 | 显示全部楼层
多谢 楼上各位  谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 11:32 , Processed in 0.881867 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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