文字のランダムな文字列の生成(Microsoft Excel)
ナンシーは、それぞれが8つのランダムな文字を含む50の「数字」をExcelに選択させようとしています。文字は数字または文字(大文字または小文字)のいずれかです。
乱数が実際に数字(数字のみ)である場合、それらを生成するのは簡単です。あなたがする必要があるのは、このように(分析ツールパックの)RANDBETWEEN関数を使用することだけです:
=RANDBETWEEN(10000000,99999999)
しかし、これはナンシーが望んでいることではありません。彼女のランダムな「数字」には、大文字と小文字も含めることができます。これは少し粘着性になります。
ただし、使用できるアプローチはいくつかあります。
1つのアプローチは、B7などの個々のセルにすべての可能な文字を配置することです。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
このセルに、MySourceなどのわかりやすい名前を付けます。次に、次のような式を使用して、ランダムな文字列を返すことができます。
=MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)
式は長いです。わかりやすくするために個々の行に分割されていますが、それでも1つの式です。セルB7に入力したソースからプルされた8文字を連結します。
別のアプローチは、ランダムなテキスト文字列に必要なすべての文字を含むテーブルを作成することです。 1から62までの数字を列に配置し、各行に1つずつ配置することから始めます。これらの数字の左側に、A、B、C、Dなどの文字を配置します(これは、前の手法でセルB7に配置した文字と同じである必要があります)。62行の両方の列を選択して名前を付けます。 、MyTableなど。次に、次の式を使用してランダムな文字を生成できます。
=VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2)
繰り返しになりますが、これは前の式より少し短いですが、単一の式であることを忘れないでください。
これまでに提示された各アプローチには、1つの欠点があります。それは、ワークシートが再計算されるたびに再生成されることです。したがって、定期的に変更されない単一のランダムな文字列を生成することは困難です。これを回避する最善の方法はマクロを使用することですが、必ずしもユーザー定義関数を使用する必要はありません。どうして?それも、ワークシートが再計算されるたびに結果が変わるためです。
代わりに、特定のセル位置からランダムな文字列をブックに配置するマクロが必要です。以下はそのようなマクロの例です:
Sub MakeRandom() Dim J As Integer Dim K As Integer Dim iTemp As Integer Dim sNumber As String Dim bOK As Boolean Range("D4").Activate Randomize For J = 1 To 50 sNumber = "" For K = 1 To 8 Do iTemp = Int((122 - 48 + 1) * Rnd + 48) Select Case iTemp Case 48 To 57, 65 To 90, 97 To 122 bOK = True Case Else bOK = False End Select Loop Until bOK bOK = False sNumber = sNumber & Chr(iTemp) Next K ActiveCell.Value = sNumber ActiveCell.Offset(1, 0).Select Next J End Sub
マクロを実行すると、セルD4:D53にあるものはすべてランダムな値で上書きされます。値を別の場所に書き込む場合は、マクロの先頭近くにあるRangeステートメントを変更します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3872)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link文字のランダムな文字列の生成。