如果它具有值,则仅在范围中选择随机单元格 - Excel

Muh*_*ana 2 random excel vba excel-vba

所以这是我正在使用的以下VBA代码.它工作得很好,但我需要扩大范围以检查其他单元格,但其中一些单元格可能包含空单元格,我不想选择那些单元格.

有没有办法绕过那些空单元格?

Dim RNG1 As Range
Set RNG1 = Range("H1:H30")

Dim randomCell1 As Long
    randomCell1 = Int(Rnd * RNG1.Cells.Count) + 1

With RNG1.Cells(randomCell1)
.Select
'will do something else here, like copy the cell, fill the cell with a color, etc
End With
Run Code Online (Sandbox Code Playgroud)

Gar*_*ent 6

这应该只选择非空单元格:

Sub marine()
    Dim RNG1 As Range, r As Range, c As Collection
    Set c = New Collection
    Set RNG1 = Range("H1:H30")
    For Each r In RNG1
        If r.Value <> "" Then
            c.Add r
        End If
    Next r
    Dim N As Long
    N = Application.WorksheetFunction.RandBetween(1, c.Count)
    Set rselect = c.Item(N)
    rselect.Select
End Sub
Run Code Online (Sandbox Code Playgroud)

注意:

这是一般技术的一个例子.要从范围的子集中进行随机选择,请收集子集并从集合中进行选择.