Excelで文字列をシャッフルする計算式
Excelを使って、セルに入力された文字列をシャッフル(ランダムに並べ替え)する方法について解説します。今回使用するのは、CONCAT関数とMID関数、SORTBY関数、RANDARRAY関数です。この計算式を使用すると、文字列の各文字をランダムな順序で再配置することができます。
シャッフルする計算式
以下の計算式を使用して、セルに入力された文字列をシャッフルします。
=CONCAT(MID(文字列, SORTBY(SEQUENCE(LEN(文字列)), RANDARRAY(LEN(文字列))), 1))
この計算式は、文字列の各文字をランダムな順序で並べ替え、結合します。
「文字列」の指定を一度で済ますならば以下の計算式を使用してください。
=LET(_Str,文字列,CONCAT(MID(_Str, SORTBY(SEQUENCE(LEN(_Str)), RANDARRAY(LEN(_Str))), 1)))
計算式の構造
この計算式は、以下のように各部分に分解できます。
=CONCAT(MID(文字列, SORTBY(SEQUENCE(LEN(文字列)), RANDARRAY(LEN(文字列))), 1))
- LEN(文字列): セルに入力された文字列の長さを取得します。
- SEQUENCE(LEN(文字列)): 1から文字列の長さまでの連続した数値の配列を生成します。
- RANDARRAY(LEN(文字列)): ランダムな数値の配列を生成します。
- SORTBY(SEQUENCE(LEN(文字列)), RANDARRAY(LEN(文字列))): 生成した連続した数値の配列をランダムな順序に並べ替えます。
- MID(文字列, …, 1): ランダムな順序に並べ替えた位置から1文字を取り出します。
- CONCAT(…): 取り出された文字を結合します。
具体的な使用例
以下の具体例を用いて、この計算式の使用方法を説明します。
例: セルA1の文字列をシャッフルする
セルA1に以下の文字列が入力されているとします。
'-!"#$%&()*,./:;?@[]^_`{|}~+<=>
ご自身の環境でテストする場合には先頭に「’」を追加した以下の文字列をA1へコピペしてください。
''-!"#$%&()*,./:;?@[]^_`{|}~+<=>
セルB1に以下の計算式を入力します。
=CONCAT(MID(A1, SORTBY(SEQUENCE(LEN(A1)), RANDARRAY(LEN(A1))), 1))
この計算式をセルB1に入力すると、文字列がシャッフルされた結果が表示されます。例えば、'-!"#$%&()*,./:;?@[]^_`{|}~+<=>>
が!&:<=|.#>*~`[]',/$@;%^})?_"+{-(
のように変わります。
計算式の詳細な説明
- LEN(A1): セルA1に入力された文字列の長さを取得します。この例では文字列の長さは31です。
- SEQUENCE(LEN(A1)): 1から27までの連続した数値の配列を生成します。
- RANDARRAY(LEN(A1)): 長さ27のランダムな数値の配列を生成します。
- SORTBY(SEQUENCE(LEN(A1)), RANDARRAY(LEN(A1))): 連続した数値の配列(1から27)をランダムな順序に並べ替えます。
- MID(A1, …, 1): ランダムな順序に並べ替えた位置から1文字を取り出します。これにより、文字列全体がランダムに並べ替えられます。
- CONCAT(…): 取り出された文字を結合し、最終的なシャッフル結果を表示します。
LET関数で加工したコピペ用の式の使用手順
文字列シャッフルの実行時は、上記の式の「文字列」指定を一度で済ますことができるように加工した以下の式を使うと便利です。
=LET(_Str,文字列,CONCAT(MID(_Str, SORTBY(SEQUENCE(LEN(_Str)), RANDARRAY(LEN(_Str))), 1)))
上記の式を出力予定先へコピペし、「関数の挿入」ボタンを押しましょう。続けて「文字列セル」の登録をする予定です。下図ではA1の文字列をシャッフルする出力先としてB1を選びました。
「名前値1」の「文字列」を「A1」へ置き換えます。
シャッフルした状態でA1の文字列が出力されます。
参考:一部の文字だけをランダムで取り出すには?
上記の計算式を応用して、セル内から字数を指定して一部だけを取り出すことも可能です。設定の詳細は下記のページを参照してください。
コメント