excel - 选择范围内的随机单元格
问题描述
我正在尝试在 VBA 中对一系列单元格执行操作。我希望单元格的选择是随机的,而不是按照范围设置的顺序。
Sub Solver_Step_Evo()
Set Rng = GetRange(ThisWorkbook.ActiveSheet.Range("Variable_Range"))
For Each i In Rng
'perform an action on I where I is randomly selected.
Next i
End Sub
我的偏好是它随机化顺序,而不仅仅是随机选择一个可以多次选择一个单元格的单元格。
提前致谢。
解决方案
这是一个可能的解决方案。我将相关范围内的所有单元格添加到集合中。然后,我使用随机索引导航集合。访问索引后,我将其从集合中删除并重复该过程。
这对你有用吗?
编辑:无需c.Count
为每次迭代调用该方法。我们可以自己解决这个问题。它可能比调用对象的方法更有效。
Sub SuperTester()
Dim c As Collection
Dim rng As Range
Dim cel As Range
Dim idx As Long
Dim remainingCount As Long
Set rng = Range("A2:A17")
Set c = New Collection
For Each cel In rng
c.Add cel
Next cel
remainingCount = c.Count
While remainingCount > 0
idx = WorksheetFunction.RandBetween(1, c.Count)
Debug.Print c.Item(idx).Address
c.Remove idx
remainingCount = remainingCount - 1
Wend
End Sub
推荐阅读
- javascript - Javascript函数/未定义错误-提示计算
- excel - 使用 SUMIF 获取条件列表
- haskell - 检查一个案例中的多个条件
- django - 即使访问网站没有明显错误,为什么 Apache 在错误日志中不断显示 wsgi 错误
- python - 保存后如何停止VScode恢复我的更改
- visual-studio - 是否有内置方法可以将持续交付设置到专用(非天蓝色)服务器?
- c++ - mongocxx:插入日期时间
- powershell - 删除文件路径的根
- sql-server - 如果值为 0,SQL 触发器删除行
- python - Python/Ionic/MySQL 通知