Excel精英培训网

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

[已解决]怎么用代码解决?

[复制链接]
发表于 2014-7-4 10:50 | 显示全部楼层 |阅读模式
本帖最后由 sfsds 于 2014-7-4 16:09 编辑

A1到最后一行数据,如果有数字2,在对应的B列填上随机数据
随机数最大值是2.7,最小为2.01,代码怎么写?
附件: 附件.rar (6.98 KB, 下载次数: 6)
发表于 2014-7-4 11:27 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2. For x = 1 To Range("a65536").End(3).Row
  3. If Cells(x, 1) = 2 Then
  4. Cells(x, 2) = (Int(Rnd() * 69) + 1) / 100 + 2
  5. End If
  6. Next x
  7. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-7-4 14:01 | 显示全部楼层
lisachen 发表于 2014-7-4 11:27

(Int(Rnd() * 69) + 1) / 100 + 2
能不能解释这句代码,什么rnd ,数字69, 100等
回复

使用道具 举报

发表于 2014-7-4 14:46 | 显示全部楼层
sfsds 发表于 2014-7-4 14:01
(Int(Rnd() * 69) + 1) / 100 + 2
能不能解释这句代码,什么rnd ,数字69, 100等

这是几个函数  
rnd产生[0,1)之间的随机小数。
Rnd() * 69生成0-69之间的随机数,
之后加1 是为了确保数据在1-70之间
其他的都是简单数学,自己体会吧
回复

使用道具 举报

 楼主| 发表于 2014-7-4 16:16 | 显示全部楼层
本帖最后由 sfsds 于 2014-7-4 16:18 编辑
lisachen 发表于 2014-7-4 14:46
这是几个函数  
rnd产生[0,1)之间的随机小数。
Rnd() * 69生成0-69之间的随机数,

Round(Rnd()*(2.7-2.01)+2.01,2)这样写行不行?




回复

使用道具 举报

发表于 2014-7-4 16:24 | 显示全部楼层
本帖最后由 lisachen 于 2014-7-4 16:26 编辑
sfsds 发表于 2014-7-4 16:16
Round(Rnd()*(2.7-2.01)+2.01,2)这样写行不行?


思路可以,你带入代码试试
回复

使用道具 举报

 楼主| 发表于 2014-7-5 21:12 | 显示全部楼层
lisachen 发表于 2014-7-4 14:46
这是几个函数  
rnd产生[0,1)之间的随机小数。
Rnd() * 69生成0-69之间的随机数,

Rnd() * 69) + 1
为什么不能写成Rnd() * 70 ???
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 07:15 , Processed in 0.300833 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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