Vba 使随机生成器创建唯一的序列

Vba 使随机生成器创建唯一的序列,vba,excel,Vba,Excel,此随机生成器工作正常,但随机序列不是唯一的 我需要所有序列都是唯一的,有人知道怎么做吗 谢谢 Sub RanSerialGenerator() Dim rng As Range Dim LastRow As Long With Sheets(') LastRow = .Range("C" & .Rows.Count).End(xlUp).Row End With Range("A1").FormulaR1C1 = "Header Name" Range("A2", Range

此随机生成器工作正常,但随机序列不是唯一的

我需要所有序列都是唯一的,有人知道怎么做吗

谢谢

Sub RanSerialGenerator()
Dim rng As Range
Dim LastRow As Long

With Sheets(')
    LastRow = .Range("C" & .Rows.Count).End(xlUp).Row
End With

Range("A1").FormulaR1C1 = "Header Name"
Range("A2", Range("A2").End(xlDown)).Clear

   For Each rng In Sheets(1).Range("E2:E" & LastRow)

    rng.Value = Pwd(rng.Value)
Next

End Sub


Function Pwd(ByVal strTemp As String) As String

Dim i As Integer, iTemp As Integer, bOK As Boolean, iLength As Integer

'48-57 = 0 To 9, 65-90 = A To Z, 97-122 = a To z
'amend For other characters If required

'Set the # of characters
For i = 1 To 3
    Do
    ' Initialize the seed using Timer.
     Randomize (Timer)

        iTemp = Int((122 - 48 + 1) * Rnd + 48)
        Select Case iTemp
        Case 65 To 90, 97 To 122: bOK = True
        Case Else: bOK = False
        End Select
    Loop Until bOK = True
    bOK = False
    strTemp = strTemp & Chr(iTemp)

Next i
Pwd = strTemp
End Function
试试这个:

Sub RanSerialGenerator()
    Dim rng As Range
    Dim LastRow As Long
    Dim p As String
    With Sheets("Sheet1")
        LastRow = .Range("C" & .Rows.Count).End(xlUp).Row
    End With

    Range("A1").FormulaR1C1 = "Header Name"
    Range("A2:A" & Rows.Count).Clear

    For Each rng In Sheets(1).Range("E2:E" & LastRow)
        Do
            p = Pwd(rng.Value)
        Loop Until IsError(Application.Match(p, Sheets(1).Range("E1:E" & rng.Row), 0))
        rng.Value = p
    Next

End Sub

此外,尚不清楚
范围(“A1”)
应属于哪个工作表?也许最好明确使用sheet:
Sheets(“Sheet1”).Range(“A1”)…

使用列表中的Find()检查刚刚得到的值:如果找到了,请再次调用Pwd()。谢谢你,蒂姆,我会试试这个