每个唯一值的

时间:2017-02-27 21:51:17

标签: arrays excel vba foreach

我尝试创建一个数组并用唯一值填充它。 由于检查值是否唯一,我无法创建基本的“每个”过程。 我只想创建一个唯一的随机数,将其放入一个数组中,创建另一个唯一的随机数,并将其放入同一个数组中。 如果没有搜索该主题并且没有谷歌那个问题,那么我必须在stackoverlofw询问社区。

我没有任何有价值的代码,因为没有任何效果。

我只有一个谷歌代码,它在excel的单元格中为我工作,但不在数组中。

For Each Cell In Selection.Cells

    Do
        rndNumber = Int((High - Low + 1) * Rnd() + Low)
    Loop Until Selection.Cells.Find(rndNumber, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing
    Cell.Value = rndNumber
Next

希望

1 个答案:

答案 0 :(得分:5)

Option Explicit

Function GetRandomsArray(ByVal n As Long, Low As Long, High As Long)
    Dim rndNumber As Long

    If High - Low + 1 < n Then n = High - Low + 1
    With CreateObject("Scripting.Dictionary")
        Do
            rndNumber = Int((High - Low + 1) * Rnd() + Low)
            .Item(rndNumber) = 1
        Loop While .Count < n
        GetRandomsArray = .Keys
    End With
End Function

用于&#34; Main&#34;子如下:

Dim myArray As Variant

myArray = GetRandomsArray(5, 1, 10) '<--| get an array of 5 unique random numbers between 1 and 10