Excel精英培训网

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

[已解决]谢谢蓝桥老师。两次求平均值

[复制链接]
发表于 2011-10-31 23:15 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2011-11-3 22:07 编辑

应二楼老师的建议,我在一楼重新上传了带有我想达到的效果的附件:求平均值2
老师:
我上传的附件中有写好的程序,但需要进行修改,请看看,谢谢了。
需求已在上传的附件中详细说明了。



最佳答案
2011-11-2 16:32
请见附件。

求平均值2.rar

157.95 KB, 下载次数: 16

发表于 2011-11-1 20:19 | 显示全部楼层
如果你把第三个问题像第二个问题一样,用公式来表达出来就好了。现在理解起来有点困难。
回复

使用道具 举报

 楼主| 发表于 2011-11-1 22:43 | 显示全部楼层
回复 铁马冰河 的帖子

老师;
根据您的建议,我在一楼更新了附件(增加了实例说明),请看看。
回复

使用道具 举报

发表于 2011-11-2 15:39 | 显示全部楼层
合计数是指的总金额的合计吗?
本例中:金融行业有28家,总金额为148亿,然后平均数可得。
另外只要求效果表中的3个级别的?表上所示的这几个行业的?
回复

使用道具 举报

发表于 2011-11-2 16:30 | 显示全部楼层
  1. Sub yy()
  2. Dim Arr, i&, hj, gs
  3. Dim d, k, t, d1, t1, x$, k1, k2, Brr, hy, jb, r1, r2
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Set d1 = CreateObject("Scripting.Dictionary")
  6. Sheet4.Activate
  7. Cells.Clear
  8. Arr = Sheet2.[a1].CurrentRegion
  9. For i = 2 To UBound(Arr)
  10.     x = Arr(i, 13) & "|" & Arr(i, 8)
  11.     d(x) = d(x) + 1
  12.     d1(x) = d1(x) + Arr(i, 7) / 10000
  13. Next
  14. k = d.keys
  15. t = d.items: t1 = d1.items
  16. d.RemoveAll: d1.RemoveAll
  17. For i = 2 To UBound(Arr)
  18.     d1(Arr(i, 8)) = ""
  19.     d(Arr(i, 13)) = ""
  20. Next
  21. k1 = d.keys: k2 = d1.keys
  22. [c1].Resize(1, d1.Count) = k2
  23. [a3].Resize(d.Count, 1) = Application.Transpose(k1)
  24. ReDim Brr(1 To d.Count, 1 To d1.Count)
  25. For i = 0 To UBound(k)
  26.     hy = Split(k(i), "|")(0)
  27.     jb = Split(k(i), "|")(1)
  28.     Set r1 = [a:a].Find(hy)
  29.     Set r2 = Rows(1).Find(jb, , , 1)
  30.     Brr(r1.Row - 2, r2.Column - 2) = Format(t1(i) / t(i), "0.00")
  31. Next
  32. [c3].Resize(UBound(Brr), UBound(Brr, 2)) = Brr
  33. For i = 1 To UBound(Brr)
  34.     hj = Application.Sum(Cells(i + 2, 3).Resize(1, UBound(Brr, 2)))
  35.     gs = Application.CountA(Cells(i + 2, 3).Resize(1, UBound(Brr, 2)))
  36.     Cells(i + 2, 2) = Format(hj / gs, "0.00")
  37. Next
  38. For i = 1 To UBound(Brr, 2)
  39.     hj = Application.Sum(Cells(3, i + 2).Resize(UBound(Brr), 1))
  40.     gs = Application.CountA(Cells(3, i + 2).Resize(UBound(Brr), 1))
  41.     Cells(2, i + 2) = Format(hj / gs, "0.00")
  42. Next
  43. [b2] = "平均数"
  44. ActiveSheet.UsedRange.Borders.LineStyle = 1
  45. Set d = Nothing: Set d1 = Nothing
  46. End Sub
复制代码
回复

使用道具 举报

发表于 2011-11-2 16:32 | 显示全部楼层    本楼为最佳答案   
请见附件。

求平均值21102.rar

163.74 KB, 下载次数: 18

回复

使用道具 举报

发表于 2011-11-3 07:53 | 显示全部楼层
求平均值2.rar (145.01 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2011-11-3 07:57 | 显示全部楼层
学习了!!支持!!
回复

使用道具 举报

发表于 2011-11-3 12:28 | 显示全部楼层
学习一下版主的代码,嘿嘿。
回复

使用道具 举报

 楼主| 发表于 2011-11-3 18:25 | 显示全部楼层
回复 蓝桥玄霜 的帖子

谢谢蓝桥老师关注,
不过,能否将导入到结果表中的各列按1、2、3、4、5。。。。的顺序呢,目前,提取出来的结果的各列是无序的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 01:37 , Processed in 0.460525 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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