''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''***************arrRndBetween*************************************
'目的: 返回lngLow至lngUp之间的不重复随机整数数组
'参数: lngLow: 产生随机整数的下限
' Lngup: 产生随机整数的上限
' 如参数为小数,将四舍五入。
'返回: arrRndBetween()随机不重复整数数组
'*****************************************************************
Function arrRndBetween(lngLow, lngUp)
Dim arrResult() As Long
Dim lngTemp As Long, i As Long, lngRand As Long
ReDim arrResult(1 To lngUp - lngLow + 1)
For i = 1 To lngUp - lngLow + 1
arrResult(i) = i + lngLow - 1
Next i
For i = 1 To lngUp - lngLow + 1
lngRand = Int(Rnd() * (lngUp - lngLow + 1) + 1) '产生在lngUp-lngLow之间随机整数
lngTemp = arrResult(lngRand) '将arrResult(随机整数)与arrResult(i)互换
arrResult(lngRand) = arrResult(i)
arrResult(i) = lngTemp
Next i
arrRndBetween = arrResult
End Function
Function superTr(x)
'转行数组为列,以便写入列range,系统转置有bug
Dim l, i, xx
l = LBound(x)
ReDim xx(1 To UBound(x) - l + 1, 1 To 1)
For i = l To UBound(x)
xx(i, 1) = x(l + i - 1)
Next
superTr = xx
End Function
Public Sub arrN(n, ByRef a()) '生成1-n的整形数组
Dim i As Long
For i = 1 To n
a(i) = i
Next
End Sub
Public Sub randtest()
Dim a
a = arrRndBetween([A1], [B1])
Range("A2").Resize(UBound(a), 1) = superTr(a)
End Sub
Function RndToArr(ByVal min, ByVal max, n, d)
'min=最小值,max=最大值,n=个数,d=小数位
'RAND()*(b-a)+a 工作表函数帮助
Dim i
ReDim arr(1 To n)
For i = 1 To n
arr(i) = Application.Round(Rnd() * (max - min) + min, d) '四舍五入得到[min,max]区间的随机数
Next
RndToArr = arr
End Function