例えばパスワードを調べる場合などに、「数字」と「小文字」からなる文字列をもれなく生成する方法を示します。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
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
コメント