(Excel)文字列中の文字をランダムに並べ替える

 Excelで1つの文字列をシャッフルする、つまり1文字単位でランダムに並べ替える方法についてです。

  • 各種関数の組み合わせにより文字列をランダムに並べ替えることができます。

手順

 画像ではB2セルに式を入力することにより「ABCDEvwxyz」の10文字をランダムに並べ替えた結果を表示しています。

f:id:accs2014:20200619032724p:plain:w780

 入力されている式は次のようなものです。

=CONCAT(MID("ABCDEvwxyz",SORTBY(SEQUENCE(10),RANDARRAY(10),1),1))

 まずMID関数を使って文字を1文字ずつ区切るのですが、第2引数(○文字目)にSORTBY関数を用いて「重複しない1~10のランダムな整数」を与えています。なおRANDARRAY関数の引数(10)は文字列の長さに合わせる必要があります。
 これで文字列は1文字ずつランダムに分割されますので、あとはCONCAT関数で結合して完了というわけです。

 重複しないランダムな整数の生成部分(式では「SORTBY(SEQUENCE(10),RANDARRAY(10),1)」の部分)については次の記事でも簡単に触れています。

www.officeisyours.com
 

f:id:accs2014:20200619032728p:plain:right:w400

 式を下方にフィルコピーした結果です。
 随時再計算されますので、結果を固定したい場合はコピーして値を貼り付ける必要があります。

 次の画像ではD3セルに式を入力して下方にフィルコピーすることで、B列の文字列をそれぞれランダムに並べ替えています。

f:id:accs2014:20200619032731p:plain:w780

 D3セルに入力されている式は次のようなものです。

=CONCAT(MID(B3,SORTBY(SEQUENCE(LEN(B3)),RANDARRAY(LEN(B3)),1),1))

 やっていることは上記の例と全く同じで、一部の引数を参照に切り替えているだけです。