Excel精英培训网

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

[已解决]怎样取数组末位数和末位数的平均值

[复制链接]
发表于 2015-4-8 13:31 | 显示全部楼层 |阅读模式
本帖最后由 gwfzh 于 2015-4-8 13:41 编辑

各位老师:怎样取数组末位数和末位数的平均值
         对[C5:B1189]是二列数据:
         1、按列分别取其单元格末位数:
         2、对上述所取末位数分别按以下方法按每100行取其平均值:
               1)对于行数<100行内的数据按AVERAGE($D$5:$D103)即从第一个数据始至该行数据止(如[e5:E105]绿色单元格区域)取平均值;
              2)否则,对于行数>=100行内的数据按AVERAGE($D5:$D105)即从该行数据倒数往上100行止(如E105黄色单元格区域)取平均值
         不知怎么的,代码Sub MOweiW0()中语句avg = Application.Average(Application.Index(Wr, 0, 1))取不到平均值,且末位数好像也不是按照上述要求取的,该怎样用VBA代码取上述末位数和末位数的平均值,请各位老师帮忙了,谢谢!!! 数组均值.zip (52.21 KB, 下载次数: 9)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-4-8 14:30 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2.     arr = Range("a5:e" & [a65536].End(3).Row)
  3.     For i = 1 To UBound(arr)
  4.         arr(i, 4) = Val(Right(arr(i, 3), 1))       '取末位数
  5.         If i <= 100 Then    '前100行,从第1行开始到本行平均
  6.             s = s + arr(i, 4)
  7.             arr(i, 5) = s / i
  8.         Else             '大于100行,从本行开始往前100行平均
  9.             s = s + arr(i, 4) - arr(i - 100, 4)         '加上本行,去掉首行
  10.             arr(i, 5) = s / 100
  11.         End If
  12.     Next
  13.     Range("a5:e" & [a65536].End(3).Row) = arr
  14. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
gwfzh + 3 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 04:26 , Processed in 0.301819 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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