Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 张雄友

[已解决]极端难度求和哪一列隐藏了哪一列就不参与计算

[复制链接]
 楼主| 发表于 2014-5-13 20:40 | 显示全部楼层
平均的搞好了,但是不会自动计算的,要按一下F9。
  1. Function PJ(rng)
  2. Application.Volatile
  3. For Each cel In rng
  4.     s1 = s1 + IIf(cel.EntireColumn.Hidden = True, 0, cel.Value)
  5.     s2 = s2 + IIf(cel.EntireColumn.Hidden = True, 0, 1)
  6. Next
  7. PJ = s1 / s2
  8. End Function
复制代码
回复

使用道具 举报

发表于 2014-5-13 20:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 dsmch 于 2014-5-13 20:43 编辑
张雄友 发表于 2014-5-13 20:18
不行啊。
  1. Function pj(rng)
  2. Application.Volatile
  3. For Each cel In rng
  4. If cel.EntireColumn.Hidden = False Then
  5. s = s + cel.Value
  6. s2 = s2 + 1
  7. End If
  8. Next
  9. pj = Application.Round(s / s2, 2)
  10. End Function

  11. Function zdz(rng)
  12. Application.Volatile
  13. s = -10 ^ 8 '最小值
  14. For Each cel In rng
  15. If cel.EntireColumn.Hidden = False Then
  16. If cel.Value > s Then s = cel.Value
  17. End If
  18. Next
  19. zdz = s
  20. End Function
复制代码

评分

参与人数 1 +3 收起 理由
张雄友 + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-5-13 20:45 | 显示全部楼层
dsmch 发表于 2014-5-13 20:42

s = -10 ^ 8 '最小值

这句有什么用?什么意思?

点评

看来楼主对程序了解不多,如果取最大值,先取一个最小值(比如s),然后和单元格值逐个比较,如果单元格的值比s大,s=单元格的值,继续比较直至结束,这番比较下来,s自然就是最大值了  发表于 2014-5-13 20:52
回复

使用道具 举报

 楼主| 发表于 2014-5-13 20:49 | 显示全部楼层
还是要按一下F9才行的,隐藏某列后不会自动马上计算的。
回复

使用道具 举报

 楼主| 发表于 2014-5-13 20:54 | 显示全部楼层
这样设置的话,最小值就求不了了??????

s = -10 ^ 8 '最小值

点评

同样,先设置一个最大值再比较  发表于 2014-5-13 21:07
回复

使用道具 举报

发表于 2014-5-13 21:01 | 显示全部楼层
学习一下学习一下啊
回复

使用道具 举报

 楼主| 发表于 2014-5-13 21:04 | 显示全部楼层
dsmch 发表于 2014-5-13 20:07
………………

再问多一句。谢谢。
回复

使用道具 举报

 楼主| 发表于 2014-5-13 21:58 | 显示全部楼层
想通了。
  1. Function QH(rng) '求和
  2. Application.Volatile
  3. For Each cel In rng
  4.     s = s + IIf(cel.EntireColumn.Hidden = True, 0, cel.Value)
  5. Next
  6. QH = s
  7. End Function

  8. Function PJ(rng) '平均值
  9. Application.Volatile
  10. For Each cel In rng
  11. If cel.EntireColumn.Hidden = False Then
  12. s = s + cel.Value
  13. s2 = s2 + 1
  14. End If
  15. Next
  16. PJ = Application.Round(s / s2, 2)
  17. End Function

  18. Function ZDZ(rng) '取最大值
  19. Application.Volatile
  20. s = -10 ^ 8 '定义一个最小值
  21. For Each cel In rng
  22. If cel.EntireColumn.Hidden = False Then
  23. If cel.Value > s Then s = cel.Value
  24. End If
  25. Next
  26. ZDZ = s
  27. End Function

  28. Function ZXZ(rng) '取最小值
  29. Application.Volatile
  30. s = 10 ^ 9 '定义一个最大值
  31. For Each cel In rng
  32. If cel.EntireColumn.Hidden = False Then
  33. If cel.Value < s Then s = cel.Value
  34. End If
  35. Next
  36. ZXZ = s
  37. End Function
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-5-14 19:47 | 显示全部楼层
dsmch 发表于 2014-5-13 20:42

有二个问题:1 将D:I全部隐藏后,计算出错。
                     2,复制粘贴不能用了。

dsmch.rar

17.91 KB, 下载次数: 2

点评

附件不能打开  发表于 2014-5-14 20:15
回复

使用道具 举报

 楼主| 发表于 2014-5-14 20:37 | 显示全部楼层
上03版附件。

dsmch.rar

11.49 KB, 下载次数: 2

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 06:06 , Processed in 0.322855 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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