パスワードを作成したい、ユーザーIDを乱数で発行したい…などなど
以外と乱数を取得することって多いですよね。
今回は、「大文字・小文字半角英数で5桁の乱数を5万件用意する」という方法をまとめてみようと思います。

乱数を作る

乱数を作る関数を準備してみました…

Public Function pass(Optional intLength As Integer = 5)

Dim strPass As String,strLower As String,strUpper As String,strNumber As String,strChars As String
Dim intMax As Integer,i As Integer

strLower = “qwertyupasdfghjkzxcvbnm”
strUpper = “QWERTYUPASDFGHJKZXCVBNM”
strNumber = “23456789”

strChars = strLower & strNumber & strUpper
intMax = Len(strChars)

For i = 1 To intLength
strPass = Mid(strChars, Int((intMax – 1 + 1) * Rnd + 1), 1) & strPass
Next i

pass = strPass

End Function

今回はパスワードを5万件ということだったので、間違いやすい「0(ゼロ)とO(オー)」や「i,Iとl,Lと1」といった文字を対象から削除しています。
※strLower・strUpper・strNumberの定義に注目!

乱数の桁数はintLengthで決定しています。今回は5桁なので「Optional intLength As Integer = 5」といった書き方をしました。

5万件作る

乱数を作る関数が完成したので、5万件作成する場合にはこの関数を5万件呼び出せばOKです。

Sub Macro1()
Dim i As Long
For i = 1 To 50000
Cells(i, 1).Value = pass()
Next i
End Sub

1列目に5万件のパスワードが表示されます。

【番外編】重複を省く

乱数は重複を許さない場合が多くあります。
重複削除のマクロを汲んでもよいとは思いますが、今回は手間の少ないExcel機能を使ってみました。

excel_radom

データを選択し、「データ」タブの「重複を削除」を実行します。
重複がある場合は自動で削除され、重複がない場合はダイアログにて重複なしと表示されます。