
每当需要在Excel中生成一组特定条件下的随机数时,很多人可能会觉得手足无措。
你可能曾经遇到过这样的情况:项目需要你生成一组10个数字,它们的总和必须精确为100。
手工计算和生成这样的数值是件相当繁琐的事情,更别提还要确保每次生成的数值都是随机的了。
那么,有没有一种方法能够轻松应对这个问题呢?答案是肯定的!
今天,让我们一起探索如何利用Excel的强大功能,轻松实现这一目标。

在Excel中实现根据固定个数和固定和生成随机数,并没有对应的内置函数可以引用,但我们可以通过使用VBA来实现这个效果。
01 直接生成所需随机数
1.启动VBA编辑器。打开Excel表格,并按下Alt + F11组合键,打开VBA编辑器。

2. 插入新模块。在VBA编辑器中,依次点击菜单栏中的【插入】—【模块】,或者右击任意模块,选择“插入”,再选择“模块”,这两种方式都可以快速插入一个新的代码模块。

3. 编写VBA代码。在新插入的模块中编写以下VBA代码来实现生成随机数的功能:
Sub GenerateRandomNumbers()
Dim count As Integer
Dim total As Integer
Dim sum As Double
Dim i As Integer
'指定生成随机数的个数和总和值
count = 10
total = 100
'生成随机数序列
Randomize
For i = 1 To count
Cells(i, 1) = Int((total - sum) * Rnd) + 1
sum = sum + Cells(i, 1)
Next i
'确保最后一个数值使总和达到目标值
Cells(count, 1) = total - sum
End Sub

4. 运行VBA宏。在VBA编辑器中,按下 F5键或点击工具栏中的运行按钮,执行这个宏。

5. 查看生成的随机数。回到Excel表格中,我们将看到生成的符合要求的10个随机数序列被填入第一列中。
倘若觉得生成的随机数不满意,可再次按下F5键重新生成随机数。
02 VBA自定义函数
使用VBA自定义函数在Excel中生成符合固定个数和固定和要求的随机数,可以让这个功能更加灵活和便于重复使用。
1.进入VBA编辑器。打开Excel表格,按下 Alt + F11组合键,打开VBA编辑器。

2. 插入新模块。在VBA编辑器中,依次点击菜单栏中的 【插入】—【模块】,插入一个新的代码模块。

3. 编写VBA自定义函数。在新插入的模块中编写以下VBA代码来创建自定义函数。
Function GetSJNumbers(count As Integer, total As Double) As Variant
Dim result() As Double
Dim sum As Double
Dim i As Integer, j As Integer
ReDim result(1 To count)
' 生成随机数序列
Randomize
For i = 1 To count
result(i) = Int((total - sum) * Rnd) + 1
sum = sum + result(i)
Next i
' 确保最后一个数值使总和达到目标值
result(count) = total - sum
' 将结果数组转置
Dim transposedResult() As Double
ReDim transposedResult(1 To UBound(result), 1 To 1)
For j = 1 To UBound(result)
transposedResult(j, 1) = result(j)
Next j
GetSJNumbers = transposedResult
End Function

4. 保存并关闭VBA编辑器。在VBA编辑器中,保存代码并关闭编辑器窗口,回到Excel表格界面。
5. 在Excel中使用自定义函数。现在我们可以在任何Excel单元格中使用这个自定义函数了。
例如,在单元格中输入类似于 = GetSJNumbers (10, 100),按下回车键,Excel会自动计算并填入符合条件的随机数序列。
当然这个参数可以根据自己的需求更改哦,自定义函数更为灵活。

通过以上分享的两种方法,不仅可以轻松生成符合特定个数和总和的随机数,还能在工作中大显身手,提高效率。
不要害怕尝试新的功能和技巧,Excel的强大功能总能为你的工作带来更多便利和惊喜!
若有疑问,或者分享您的经验,欢迎在下方评论区留言交流哟~