配列を列単位でシャッフル・ランダム並べ替えをする計算式
前回の記事では行単位でシャッフル・ランダム並べ替えをする計算式を紹介しました。
ここでは列単位でシャッフル・ランダム並べ替えをする計算式を紹介しますが、基本は同じです。
計算式の概要
以下の計算式は、配列の列をランダムな順序で並べ替えるために使用できます。各部分の動作について以下に説明します。
=SORTBY(配列,RANDARRAY(1,COLUMNS(配列)))
また、「配列」の指定を一度で済ますならば、LET関数で下記のように書き換えることもできます。効果はどちらでも同じです。
=LET(_Array,配列,SORTBY(_Array,RANDARRAY(1,COLUMNS(_Array))))
具体的には以下のように使用します。以下のサンプルはシャッフル対象の配列を「B1:I3」としています。どちらでも同じ効果が発生します。
=SORTBY(B1:I3,RANDARRAY(1,COLUMNS(B1:I3)))
=LET(_Array,B1:I3,SORTBY(_Array,RANDARRAY(1,COLUMNS(_Array))))
SORTBY関数
SORTBY関数は、指定したキーに基づいて配列を並べ替える関数です。この関数は、第一引数に並べ替え対象の配列を取り、第二引数に並べ替えの基準となる配列を取ります。基準となる配列の値に従って、第一引数の配列が並べ替えられます。今回は、RANDARRAY関数で生成された横並びのランダムな数値を基準として使用するため、配列の列がランダムな順序に並べ替えられます。
RANDARRAY関数
RANDARRAY関数は、指定された行数(第一引数)と列数(第二引数)に基づいてランダムな数値の配列を生成する関数です。引数には行数と列数を指定します。今回の例では、COLUMNS(配列)
で第二引数用に配列の列数を取得し、その列数分のランダムな数値を生成するために使用します。第一引数は1とします。これにより、配列の各行に対応する横並びのランダムな数値が生成されます。
COLUMNS関数
COLUMNS関数は、指定された範囲の列数を返します。例えば、COLUMNS(B1:I3)
は、範囲B1:I3
の列数である8を返します。この関数を使用することで、RANDARRAY関数の引数として配列の列数を動的に取得し、適切なサイズのランダム数値の横並び配列を生成することができます。
コメント