【问题标题】:Generate one random 5 digit number not present in a column of numbers生成一列数字中不存在的一个随机 5 位数字
【发布时间】:2016-06-09 08:13:40
【问题描述】:

我有一个 5 位数字的列表。我需要随机生成一个不属于此列表的 5 位数字。我想通过单击按钮或简单地使用公式来实现这一点。
例如:如果这是我在 excel 中的 A 列,有 5 位数字,

11111  
11113  
11115  

单击按钮时,我想生成一个唯一的 5 位数字,该数字不在此列中。 我正在使用此功能,但它仅与第一个单元格匹配。当我点击我的按钮时,它会给我从 11110 到 11116 的所有数字,除了 11111。我需要它来检查完整的列并返回一个唯一值。

Private Sub CommandButton1_Click()

Dim rw As Long
    For rw = 1 To 1
        Cells(rw, 2) = Int((11116 - 11110 + 1) * Rnd + 11110)
        Do Until Cells(rw, 2).Value <> Cells(rw, 1).Value
            Cells(rw, 2) = Int((11116 - 11110 + 1) * Rnd + 11110)
        Loop
    Next rw
End Sub

【问题讨论】:

    标签: excel random vba


    【解决方案1】:

    试试这个

    Dim rw As Long
    For rw = 1 To 1
        Rnd_Num = Int((11116 - 11110 + 1) * Rnd + 11110)
        Do Until Columns(1).Find(Rnd_Num) Is Nothing
            Rnd_Num = Int((11116 - 11110 + 1) * Rnd + 11110)
        Loop
        Cells(rw, 2) = Rnd_Num
    Next rw
    

    【讨论】:

      【解决方案2】:
      Dim rw As Long
      Dim start_, end_ As Integer
      start = 11110
      end_ = 11116
      For rw = 1 To 1
          random_ = Int((end_ - start + 1) * Rnd + start)
          Do Until Columns(1).Find(random_) Is Nothing
              random_ = Int((end_ - start + 1) * Rnd + start)
          Loop
          Cells(rw, 2) = random_
      Next rw
      

      【讨论】:

        猜你喜欢
        • 2013-01-26
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 2010-09-07
        • 2011-10-26
        • 2013-05-20
        相关资源
        最近更新 更多