|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
目标:生成10个随机数,在AA10单元格中的数值33897 基础上正负100;
注:因为经典VBA代码“生成固定的随机数”中是指定了上下限为数值,而不能采用单元格运算,所以,
目前,我采用的是 在经典VBA代码“生成固定的随机数”的基础上,先在表中(黄色标出来的行-- 纵筋长度(mm),J17:S17 )生成-100到100的数;另建一个辅助行(AA17:AJ17),然后,将之与AA10中的数值相加;最后,在VBA模块中用 Range("J17:S17") = Range("AA17:AJ17").Value,完成的。
请修改后,点击附件表格中的 “自动填写 一般项目”按钮时,可以随机生成。
请大师帮助。
Sub 生成随机数()
Sheets("3、钢筋笼检验批").Activate '激活工作表,自己命名的工作表名称为“Sheet1”的工作表
For i = 15 To 19
rng = GenerateRandNumbers("", 995, 1005, Range(Cells(i, 10), Cells(i, 19)))
rng = GenerateRandNumbers("", 95, 105, Range(Cells(i + 1, 10), Cells(i + 1, 19)))
rng = GenerateRandNumbers("", -20, 20, Range(Cells(i + 2, 10), Cells(i + 2, 19)))
Range("J17:S17") = Range("AA17:AJ17").Value '自己加的
rng = GenerateRandNumbers("", 95, 105, Range(Cells(i + 3, 10), Cells(i + 3, 19)))
rng = GenerateRandNumbers("", 1990, 2010, Range(Cells(i + 4, 10), Cells(i + 4, 19)))
i = i + 25 '向下间隔25行,比一个模板表格所占行数少1行
Next i
End Sub
Function GenerateRandNumbers(strPreString As String, intLBound As Integer, _
intUBound As Integer, rngTarget As Range) As Boolean
'******************************************************************************************
'作用:根据用户设置的几个参数自动产生一系列的随机数,并填充到工作表的指定位置
'参数:
' strPreString:这个作为最后产生的字符串的前缀
' intLBound:这个是随机数的最小可能值
' intUBound:这个是随机数的最大可能值
' rngTarget:你可以选择一个目的位置,存放这些随机数
'******************************************************************************************
On Error GoTo Errhandler
Dim rng As Range
For Each rng In rngTarget
rng.Value = CStr(strPreString & Format(Int((intUBound - intLBound) * Rnd() + intLBound), String(Len(CStr(intUBound)), "0")))
Next
GenerateRandNumbers = True
Exit Function
Errhandler:
GenerateRandNumbers = False
MsgBox Err.Description, vbCritical, "错误"
Err.Clear
Exit Function
End Function
|
|