随机化数字的具体位置

时间:2018-05-28 23:37:19

标签: excel vba basic

例如,我有数字1,9,7,4,我想随机化他们的位置,所以我会得到9,1,4,7或7,1,9,4等。你知道怎么做?感谢

3 个答案:

答案 0 :(得分:1)

这是一个基本的vba随机化到字典对象中。

Dim vals As Variant, ord As Object

Set ord = CreateObject("scripting.dictionary")

vals = Array(1, 4, 7, 9)

Do While ord.Count < (UBound(vals) + 1)
    ord.Item(vals(Application.RandBetween(LBound(vals), UBound(vals)))) = vbNullString
Loop

Debug.Print Join(ord.keys, ", ")

答案 1 :(得分:1)

这是一个更可能(简单化)的例子:(我希望我没有为你做功课)

Sub sub1()
  Dim i1&, i2&, iswap&, a4 As Variant
  a4 = Array(1, 9, 7, 4)
  For i1 = 0 To 3
    i2 = Int(Rnd() * 4) ' random integer 0 to 3
    iswap = a4(i1) ' swap(a4(i1), a4(i2))
    a4(i1) = a4(i2)
    a4(i2) = iswap
  Next i1
  Debug.Print a4(0); a4(1); a4(2); a4(3) ' Ctl-G to view, F7 to get back to code
End Sub

答案 2 :(得分:0)

你没有指定基本方言,所以这里有一些代码:

a(1) = 1 : a(2) = 4 : a(3) = 7 : a(4) = 9
FOR l = 1 TO 4
    SWAP a(l), a(INT(RND * 4 + 1))
NEXT
END