「数字」と「大文字」と「小文字」からなる文字列をもれなく生成する方法は次の通りです。
0番目「0」
1番目「1」
9番目「9」
10番目「A」
61番目「z」
62番目「10」
71番目「19」
72番目「1A」
3843番目「zz」
3844番目「100」
9999番目「2bH」
この場合のユーザー定義関数は次の通りです。
Function 文字列生成大文字(kazu)
Const teisu = 62
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
ElseIf keisu < 36 Then
moji = Chr(65 + keisu – 10) 'Chr(65)="A"
Else
moji = Chr(97 + keisu – 36) 'Chr(97)="a"
End If
ret = ret & moji
Next kurai
文字列生成大文字 = ret
End Function
Const teisu = 62
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
ElseIf keisu < 36 Then
moji = Chr(65 + keisu – 10) 'Chr(65)="A"
Else
moji = Chr(97 + keisu – 36) 'Chr(97)="a"
End If
ret = ret & moji
Next kurai
文字列生成大文字 = ret
End Function
コメント