我有一个关于excel的问题(希望在正确的论坛上)
我在excel中有100个数字的数据,我想随机选择30个数字,因为不再选择相同的数字(因此删除已经选择的数字)
我不知道该怎么办? 我尝试使用RANDBETWEEN(1; 100)并复制30次,但它可以重复相同的数字。
您能否就如何做到这一点向我提供帮助? 谢谢。 ..............
有没有办法用workheat公式而不是使用VBA来做这个 - 还有其他一些forun问题建议?
.......
答案 0 :(得分:0)
这是一些Excel VBA代码,应该可以解决这个问题
Sub RandomUniquiNumber()
Dim NumberArray As Variant
ReDim NumberArray(100)
Dim NumberArrayPosition As Long
For NumberArrayPosition = 1 To 100
NumberArray(NumberArrayPosition) = NumberArrayPosition
Next NumberArrayPosition
Dim Result As Variant
ReDim Result(30)
Dim ResultPositionNumber As Long
Dim ResultString As String
Dim RandomNumber As String
Dim InStrResult As Long
ResultString = ""
For ResultPositionNumber = 1 To 30
RandomNumber = Application.WorksheetFunction.RandBetween(1, 100)
InStrResult = InStr(1, ResultString, RandomNumber)
If InStrResult = 0 Then
ResultString = ResultString & " " & RandomNumber
Else
Do While InStrResult > 1
RandomNumber = Application.WorksheetFunction.RandBetween(1, 100)
InStrResult = InStr(1, ResultString, RandomNumber)
Loop
ResultString = ResultString & " " & RandomNumber
End If
'Result in an Array
Result(ResultPositionNumber) = RandomNumber
Next ResultPositionNumber
'If you want the result as an Array Use Result(ResultPositionNumber)
'If you want the result as an Array Use ResultString
End Sub
答案 1 :(得分:0)
尝试此变体。
在A栏中依次输入100个数字。 对于A列中的每个数字,put = RAND()在B列中。
然后使用B列对数组进行排序。
在A栏中挑选前30位数字。