英数字からなる文字列をもれなく生成する

例えばパスワードを調べる場合などに、「数字」と「小文字」からなる文字列をもれなく生成する方法を示します。VBAの場合です。
次のように生成します。

0番目「0」
1番目「1」

9番目「9」
10番目「a」

35番目「z」
36番目「10」

45番目「19」
46番目「1a」

1295番目「zz」
1296番目「100」

9999番目「7pr」

この場合のユーザー定義関数は次の通りです。

Function 文字列生成(kazu)
    Const teisu = 36

    If kazu = 0 Then
        文字列生成 = "0"
        Exit Function
    End If

    nokori = kazu

    For kurai = Int(Log(nokori) / Log(teisu)) To 0 Step -1
        keisu = Int(nokori / teisu ^ kurai)
        nokori = nokori - keisu * teisu ^ kurai
        If keisu < 10 Then
            moji = keisu
        Else
            moji = Chr(97 + keisu - 10) 'Chr(97)="a"
        End If
        ret = ret & moji
    Next kurai
    文字列生成 = ret
End Function

コメント

タイトルとURLをコピーしました