Excel精英培训网

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

[已解决]请教If语句是否可以直接引用单元格数值以及记录1000次模型运行代码

[复制链接]
发表于 2014-8-6 04:40 | 显示全部楼层 |阅读模式
本帖最后由 子夜蜘蛛 于 2014-8-11 07:07 编辑

各位老师好,这次有两个问题请教,

1. 请教是否可以在If函数中直接引用单元格内任意数值,如果不行,能否请大神帮忙编一个VBA的代码。

如 附件 方法一中 C3 :V3所得值,是根据A3输入的值改变的,但是我尝试在C3输入的If函数中直接引用A$3$不能实现,这里是否一定要用VBA代码实现哪?如果可以,能不帮我编写一个简单代码那?


2. 由于在 原始估计值 这个sheet中,我用到了Rand函数,所以导致每次worksheet一动,所有函数都会变化。 但是我想要的结果是Rand1000次后,每次结果都记录下来,然后得出平均值。 不知道这种如果用VBA编写code哪?


先谢谢各位高手啦!已经研究一周没有结果了麻烦各位帮帮忙!



最佳答案
2014-8-6 07:50
Rand1000次后,每次结果都记录下来,然后得出平均值,

这与随机一次的结果有什么区别?随机1000次然后平均的是一个随机数,随机一次也是随机数。你是不是要随机性的范围小一点?
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim rg As Range
  3.     For Each rg In Range("c4:ad23")
  4.         If rg.Value = "" Then
  5.             If Cells(rg.Row, 2) > Cells(2, rg.Column) Then
  6.                 rg.Value = 随机1000次
  7.             Else
  8.                 rg.Value = ""
  9.             End If
  10.         End If
  11.     Next rg
  12. End Sub
复制代码
  1. Public Function 随机1000次()
  2.     Dim X!, a%, x_sum!
  3.     For a = 1 To 1000
  4.         Randomize
  5.         X = 20 * Rnd() ^ 0.5
  6.         x_sum = x_sum + X
  7.     Next a
  8.     随机1000次 = x_sum / 1000
  9. End Function
复制代码
以上代码应该写在什么地方,你懂的。

If语句是否可以直接引用单元格数值.rar

25.98 KB, 下载次数: 14

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-8-6 07:26 | 显示全部楼层
  1. =COUNTIF(原始估计值!C29:C56,"<"&$A3)
复制代码
第一个问题先回了,第二个问题还没有看懂。
回复

使用道具 举报

发表于 2014-8-6 07:28 | 显示全部楼层
1.可以直接引用单元格,比如将公式改为:=COUNTIF(原始估计值!C29:C56,"<"&$A$3)
2.可以改为手动刷新
回复

使用道具 举报

发表于 2014-8-6 07:50 | 显示全部楼层    本楼为最佳答案   
Rand1000次后,每次结果都记录下来,然后得出平均值,

这与随机一次的结果有什么区别?随机1000次然后平均的是一个随机数,随机一次也是随机数。你是不是要随机性的范围小一点?
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim rg As Range
  3.     For Each rg In Range("c4:ad23")
  4.         If rg.Value = "" Then
  5.             If Cells(rg.Row, 2) > Cells(2, rg.Column) Then
  6.                 rg.Value = 随机1000次
  7.             Else
  8.                 rg.Value = ""
  9.             End If
  10.         End If
  11.     Next rg
  12. End Sub
复制代码
  1. Public Function 随机1000次()
  2.     Dim X!, a%, x_sum!
  3.     For a = 1 To 1000
  4.         Randomize
  5.         X = 20 * Rnd() ^ 0.5
  6.         x_sum = x_sum + X
  7.     Next a
  8.     随机1000次 = x_sum / 1000
  9. End Function
复制代码
以上代码应该写在什么地方,你懂的。
回复

使用道具 举报

 楼主| 发表于 2014-8-8 02:46 | 显示全部楼层
wp8680 发表于 2014-8-6 07:50
Rand1000次后,每次结果都记录下来,然后得出平均值,

这与随机一次的结果有什么区别?随机1000次然后平 ...

谢谢 您 的耐心回答,我可能没有说明白我想要的结果是什么。我想要的结果是,在工作表 中可以导出每一次得出的结果(比如复制每次C3:V3的值到C5:V5,C6:V6...依次类推,即运行完后第二个工作表会有1000行数值。然后求这1000行的平均值。不知道您能不能帮我改写一下哪,多谢啦
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 22:25 , Processed in 0.288007 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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