VBA编程:创建不重复随机数生成器(1-10000范围内)

版权申诉
5星 · 超过95%的资源 2 下载量 63 浏览量 更新于2024-08-11 收藏 1KB TXT 举报
本篇VBA代码是一个名为“生成不重复的随机数”的子程序,用于在Microsoft Excel中创建不重复的随机数序列。该程序主要用于在一个指定的范围内(由用户输入的最小值、最大值和随机数的精度决定)生成指定数量的随机数,确保每个生成的数值都是唯一的,避免重复。 1. 函数定义: - `Sub 生成不重复的随机数()`: 定义了一个名为“生成不重复的随机数”的子过程,它会执行一系列操作以生成并填充不重复的随机数。 2. 输入验证: - 首先,程序检查用户所选单元格的数量,如果超过10000个,会弹出警告并终止函数。 - 接着,通过`Application.InputBox`获取用户输入的最小值(默认为0)、最大值(默认为100)和随机数的精确度(如1或0.2)。如果用户输入的不是数值,程序会结束。 - 计算需要生成的随机数数量(需要Count/Unit),以确保不会超过可选单元格的数量。 3. 避免重复: - 使用`scripting.dictionary`对象(字典)来存储已经生成的随机数,确保每个数值只出现一次。 - 使用`Rnd()`函数生成0到1之间的随机小数,然后根据精度调整范围。 - 在一个循环中生成随机数,直到找到一个不在字典中的新数值,将其添加到选定单元格并存储在字典中。 4. 错误处理: - 使用`OnErrorResumeNext`语句处理可能出现的错误,使得即使在出现错误时程序仍能继续执行,直到找到可用的随机数。 5. 结束条件: - 如果生成的随机数数量小于或等于所需的唯一数值,那么程序会正常结束,并将随机数填入指定的单元格。 通过这个VBA函数,用户可以在Excel工作表上方便地生成一段指定范围内的不重复随机数序列,这对于数据分析、模拟实验等场景非常有用。需要注意的是,当需要生成的随机数过多而超出范围时,程序会自动调整需要生成的随机数数量以适应用户选择的单元格范围。