Excel - 从较大的数据集中选择数字

时间:2016-04-18 12:40:13

标签: excel

我有一个关于excel的问题(希望在正确的论坛上)

我在excel中有100个数字的数据,我想随机选择30个数字,因为不再选择相同的数字(因此删除已经选择的数字)

我不知道该怎么办? 我尝试使用RANDBETWEEN(1; 100)并复制30次,但它可以重复相同的数字。

您能否就如何做到这一点向我提供帮助? 谢谢。 ..............

有没有办法用workheat公式而不是使用VBA来做这个 - 还有其他一些forun问题建议?

.......

2 个答案:

答案 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位数字。