Excel VBA:无重复的随机数发生器(4例)

  • Share This
Hugh West

这篇文章说明了4个例子 随机数发生器 在这里,我们将使用Excel内置的Rnd函数来配置我们的代码。 让我们深入到例子中,学习生成唯一随机数的技术。

下载实践工作手册

下载这本练习手册,在阅读本文时进行练习。

无重复的随机数发生器.xlsm

Excel VBA中无重复的随机数发生器的4个例子

在Visual Basic编辑器中编写代码

产生没有重复的随机数 ,我们需要 开放 编写VBA代码 Visual Basic编辑器。 遵循 步骤 开放 Visual Basic编辑器 并在那里写一些代码。

  • 转到 开发商 的选项卡上的 Excel功能区 .
  • 点击 Visual Basic选项。

  • 视觉基础应用程序 窗口,点击 插入下拉菜单 选择 新模块 选择。

现在把你的 编码 里面的 视觉代码编辑器 按F5 运行 它。

1. 使用VBA的Rnd函数来生成无重复的随机数

ǞǞǞ Rnd功能 用在 Excel VBA 产生随机数 0之间 1个独家。

任务 : 生成10个随机数 之间 0 1 A1:A10单元格。

编码 : 插入 下面的 编码 Visual Basic编辑器 并按 F5 运行 它。

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>=1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub 

输出 :上述截图显示 10个独特的随机数 范围为0和1。

代码解释。

在这段代码中,我们使用了 Rnd功能 插入随机数 单元格区域A1:A10 .之前 插入 a 新号码 ,我们使用了一个 Do While 循环 样子 预定义的单元格范围(A1:A10)。 是否 已经存在 要检查 存在 的。 细胞范围 每次,我们都将代码配置为 COUNTIF功能 , 此功能 检查 a 新的随机数 列表 在插入之前已经存在的数字。

阅读更多。 用Excel公式生成随机数(5个例子)

2. 无重复的定义下限和上限的随机数发生器

产生随机数 在一个 界定范围 ,我们需要设置 下界 上行线 在我们的VBA代码中,对于信息,... 下界 是指 最低数量 上行线 是指 最高数字 范围 我们可以使用下面的方法来生成随机数。 公式 在我们的代码中。

(上界-下界+1)*Rnd+下界

2.1 随机数字发生器--十进制

任务 : 生成10个随机数 之间 10 20 A1:A10单元格。

编码 : 插入 下面的 编码 Visual Basic编辑器 并按 F5 运行 它。

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)> = 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value =randomNumber Next End Sub 

输出 :上述截图显示 10个独特的随机数 范围为1和10。

2.2 随机数发生器--整数

在这个例子中,我们将使用 VBA的Int函数 移除 分数部分 随机数 .

任务 : 生成20个随机整数 之间 1 20 A1:B10单元格。

编码 : 插入 下面的 编码 Visual Basic编辑器 并按 F5 运行 它。

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>=1 randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) LoopRng.Value = randomNumber Next End Sub 

输出 :上述截图显示 20个独特的随机整数 范围为1和20。

阅读更多。 Excel中无重复的随机数发生器(9种方法)

类似读物

  • 带有数据分析工具和Excel函数的随机数生成器
  • 如何在Excel中生成随机数据(9种简单方法)
  • 在Excel中随机生成5位数的数字(7个例子)。
  • 在Excel中随机生成4位数的数字(8个例子)。
  • 在Excel中从列表中生成随机数(4种方法)

3. 在Excel VBA中为唯一的随机数发生器指定小数位

我们可以用 圆形功能 在我们的代码中为 指定 小数点位 随机产生的唯一号码 ...... 句法 的函数是-

Round(expression, [numdecimalplaces])

我们需要 指定 第2个论点 按照我们 要求 .

任务 : 生成20个小数点后2位的随机数 之间 1 20 A1:B10单元格。

编码 : 插入 下面的 编码 Visual Basic编辑器 并按 F5 运行 它。

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)> = 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)循环 Rng.Value = randomNumber Next End Sub 

输出 :上述截图显示 20个独特的随机整数,有2个小数位 范围为1和20。

阅读更多。 在Excel中生成带小数的随机数(3种方法)

4. 在Excel VBA中开发一个无重复的随机数发生器的用户表单

在这个插图中,我们将展示如何使用一个 用户表格 Excel VBA 产生随机数 没有重复的 .

任务。 生成20个随机数 在单元格范围内 A1:B10 使用一个 用户表格 输入值 (i) 下界 (二) 上行线 (三) 小数点后的数字。

创建一个用户表格。

按照以下步骤,创建一个 用户表格 与我们 所需的输入字段 .

  • 转到 开发商 的选项卡上的 Excel功能区 .
  • 点击 Visual Basic选项。

  • 视觉基础应用程序 窗口,点击 插入下拉菜单 选择 用户表格 选择。

  • 用户表格添加 a 标签 .
  • 标题 标签 作为 下限 在属性中。

  • 添加 更多 标签 名为 上层建筑 小数点位置 .

  • 现在添加 三个TextBoxes 用户表格 .

  • 在这个阶段。 增加 a 命令按钮 并将其命名为 生成 .

  • 现在。 双击 命令按钮 并放入以下内容 编码 代码编辑器 .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>=1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • 新闻 F5 运行 编码 用户表格 出现 .
  • 下界 , 上行。 小数点位 用户表格 和打 生成按钮 .

输出 : 在 单元格A1:B10 导致的,有 20个随机数 2个小数位 范围为1至30。

阅读更多。 如何在Excel中生成无重复的随机数(7种方法)

需要记住的事情

  • 我们也可以用 修复功能 而不是 符号功能 产生唯一的整数 职能 移除 分数部分 的一个 就像 符号功能 .

总结

现在,我们知道了如何在合适的例子的帮助下,在Excel中使用VBA生成唯一的随机数。 希望它能帮助你更自信地使用该功能。 有任何问题或建议,不要忘记把它们放在下面的评论栏里。

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.