EXCEL中如何在固定数据中,随机固定数据

如图所示中,在A1-A30中 有30个数据,现在在D1-D5中,想从A1-A30随机5个数据到D1-D5,应该怎么搞?(=INDEX(A:A,RANDBETWEEN(1,30)))目前的答案是这个,但是这个我用了,我随机了20个左右,重复率比较高。我想要随机数据,但是不能重复有大神能解决吗

随机数必然重复,要产生不重复的“随机数”必须使用VBA代码。

代码:

Option Explicit

Sub 不重复的随机数5个()
    Dim arr, r, x
    arr = Range("a1:a30")
    Set r = CreateObject("Scripting.Dictionary")
    While r.Count < 5
        x = arr(Rnd() * 30 + 1, 1)
        r(x) = True
    Wend
    Range("b1:b5") = WorksheetFunction.Transpose(r.keys)
End Sub

代码窗口:

执行示例数据窗口:

追问

请问怎么修改,我选择随机数为30的时候,出现了问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-28
B列辅助,B1公式为:
=RAND()
然后选中B1,下拉填充,下拉到和A列行数相同。
D列结果,D1公式为:
=INDEX(A$1:A$26,RANK(B1,B$1:B$26))
然后选中D1,下拉填充,下拉到和A列行数相同。
----------
按F9键刷新结果,会随机变化。
相似回答