【Excel】ランダムなパスワードを任意の文字数&行数出力する関数【VBAなし】
※2024-5-24 タイトル変更しました
要約
Microsoft365あるいはWeb版Excelであれば、以下を実現できます。
導入
ネームマネージャーを開きます。
新規を選択します。
名前に「randomStrings」と入力します。
範囲は「ブック」を選択します。
次を参照に以下のコードを貼り付けます。
=LAMBDA(digit,rows,MAP(SEQUENCE(rows),LAMBDA(rowCount,REDUCE("",SEQUENCE(digit),LAMBDA(text,digit,LET(chars,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",numChars,LEN(chars),randomString,MID(chars,RANDBETWEEN(1,numChars),1),randomString)&text)))))
上記ができたら「OK」を押してネームマネージャーを閉じてください。
使い方
出力したいセルに「=randomStrings(digit,rows)」と入力してください。このとき、「digit」は桁数、「rows」は出力する行数を自然数で指定します。
補足
上記のコードを読みやすいように整形したものが以下です。
=LAMBDA(digit,rows,
MAP(SEQUENCE(rows),LAMBDA(rowCount,
REDUCE("",SEQUENCE(digit),LAMBDA(text,digit,
LET(
chars,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
numChars,LEN(chars),
randomString,MID(chars,RANDBETWEEN(1,numChars),1),
randomString
)&text
))
))
)
本稿では大小英数字の組み合わせで乱数を生成していますが、「記号も含めたい」「小文字はいらない」等の需要が出てくると思われます。その際はcharsの"ABC~789"の部分に各々細工をしてください。
あとがき
ランダムな文字列を1セルに出力する関数は調べればありましたが、1度に1,000件以上出力したい場合には使い勝手が悪かったので今回の関数を提案してみました。
少しでもお力になれたら幸いです。
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!