在空白单元格中生成唯一随机数

在空白单元格中生成唯一随机数

我的数据范围是 A1 到 A9。

单元格 A2、A4、A6、A8 为空白单元格。

A1、A3、A5、A7、A9 的值为 1、2、3、4、5。

我想在空白单元格中生成唯一的随机数,例如 6、7、8 和 9。我正在使用以下公式,但不起作用,请帮忙。

=IF(A1<>"","",RANDBETWEEN(6,9)) 

答案1

使用如下数据:

在此处输入图片描述

尝试这个简短的宏:

Sub croupier()
    Dim ary(1 To 4) As Variant
    ary(1) = 6
    ary(2) = 7
    ary(3) = 8
    ary(4) = 9
    Call Shuffle(ary)
    Range("A2") = ary(1)
    Range("A4") = ary(2)
    Range("A6") = ary(3)
    Range("A8") = ary(4)
End Sub

Public Sub Shuffle(InOut() As Variant)
    Dim I As Long, J As Long
    Dim tempF As Double, Temp As Variant

    Hi = UBound(InOut)
    Low = LBound(InOut)
    ReDim Helper(Low To Hi) As Double
    Randomize

    For I = Low To Hi
        Helper(I) = Rnd
    Next I


    J = (Hi - Low + 1) \ 2
    Do While J > 0
        For I = Low To Hi - J
          If Helper(I) > Helper(I + J) Then
            tempF = Helper(I)
            Helper(I) = Helper(I + J)
            Helper(I + J) = tempF
            Temp = InOut(I)
            InOut(I) = InOut(I + J)
            InOut(I + J) = Temp
          End If
        Next I
        For I = Hi - J To Low Step -1
          If Helper(I) > Helper(I + J) Then
            tempF = Helper(I)
            Helper(I) = Helper(I + J)
            Helper(I + J) = tempF
            Temp = InOut(I)
            InOut(I) = InOut(I + J)
            InOut(I + J) = Temp
          End If
        Next I
        J = J \ 2
    Loop
End Sub

答案2

嘿朋友们,我也有一个解决方案。因为使用 Rand 或 Randbetween 甚至与 Rank 一起使用看起来都不太有用,因为在工作表上进行任何练习后,Excel 都会重新整理随机列表。
这两个公式正在生成我正在寻找的列表。

B2 = IF(A2<>"",(A2+0),A1+5)

B2 = IF(NOT(ISNUMBER(B2)),0,IF(A2<>"",(A2+0),A1+5))

注意:原始列表从 A2 到 A10。

相关内容