|
发表于 2017-5-25 16:56
|
显示全部楼层
本楼为最佳答案
不会改变,建议学习一下传值和传址。
原代码修改一下,把原始数组一起输出至D列供参考。
- Option Base 1
- Public Function GetRnd(arr, n)
- Dim brr, r&, m&
- ReDim brr(1 To n)
- Randomize
- Do
- m = Int(Rnd() * UBound(arr) + 1)
- If arr(m) <> "" Then
- r = r + 1
- brr(r) = arr(m): arr(m) = ""
- End If
- Loop Until r = n
- GetRnd = brr
- End Function
- Sub aaa()
- Dim a
- Dim arr1
- arr1 = Range("a1:a6")
- a = GetRnd(Application.Transpose(arr1), 3)
- [b1].Resize(3, 1) = Application.Transpose(a)
- [d1].Resize(UBound(arr1)) = arr1
- End Sub
复制代码 |
|