Не могу заставить его генерировать случайные числа от 5 до 50 - PullRequest
0 голосов
/ 21 марта 2020

Здесь у меня есть фрагмент кода, который должен генерировать случайные числа от 5 до 50 в диапазоне A2: C24, но по какой-то причине это не работает, также мне нужно, чтобы он отображал и окрашивал разными цветами заполненные ячейки и частоту элемента из ячейки C3.

Sub Random()

Dim Numbers(5 To 50) As Variant
Dim i As Long, j As Long, k As Long

For k = 5 To 50
   Numbers(k) = k
Next k

Call Shuffle(Numbers)

k = 1

For Each r In Range("A2:C24")
   r.Value = Numbers(k)
   k = k + 1
Next r

End Sub

Sub Shuffle(InOut() As Variant)

Dim HowMany As Long, i As Long, j As Long

Dim tempF As Double, temp As Variant

    Hi = UBound(InOut)
    Low = LBound(InOut)
    ReDim Helper(Low To Hi) As Double
    Randomize

    For i = Low To Hi
        Helper(i) = Rnd
    Next i


    j = (Hi - Low + 1) \ 2
    Do While j > 0
        For i = Low To Hi - j
          If Helper(i) > Helper(i + j) Then
            tempF = Helper(i)
            Helper(i) = Helper(i + j)
            Helper(i + j) = tempF
            temp = InOut(i)
            InOut(i) = InOut(i + j)
            InOut(i + j) = temp
          End If
        Next i
        For i = Hi - j To Low Step -1
          If Helper(i) > Helper(i + j) Then
            tempF = Helper(i)
            Helper(i) = Helper(i + j)
            Helper(i + j) = tempF
            temp = InOut(i)
            InOut(i) = InOut(i + j)
            InOut(i + j) = temp
          End If
        Next i
        j = j \ 2
    Loop
End Sub

1 Ответ

1 голос
/ 21 марта 2020

Довольно простой маршрут в Excel будет использовать функцию RANDBETWEEN, поскольку вы имеете дело с диапазоном.

Public Sub GenerateRandomNumbers()
    '\\ This will generate random numbers...
    With Range("A2:C24")
        .Formula = "=RANDBETWEEN(5,50)"
        .Value = .Value
    End With
    '\\ Rest of the code for your requirement goes here
    '...
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...