前回の続きです。ランダムな整数を発生させて担当者をランダムに割り振りたい場合などに使える関数です。
RANK.EQ(ランクイコール)関数のおさらい
「RANDBETWEEN」を使用して、1から10の整数をランダムに生成し、その後「RANK.EQ」関数を使用してランクを付けることで、整数を重複させずに表示できます。
RANK.EQ
関数の基本的な構文は以下の通りです。
=RANK.EQ(number, ref, [order])
number
: ランクを求めたい数値。ref
: ランクを計算するための数値の配列または参照。[order]
: ソートの順序を指定します。0または省略された場合は降順、1の場合は昇順になります。
重複しないように整理する
A列に既にRANDBETWEEN(1,10)
が入力されていて、その中に重複する値が含まれている場合、それを重複しないように整理するためには、以下の手順を実行します。
=RANK.EQ(A1, $A$1:$A$10,0)+COUNTIF($A$1:A1,A1)-1
別の列(例えば、B列)に=RANK.EQ(A1, $A$1:$A$10,0)+COUNTIF($A$1:A1,A1)-1
と入力します。この手順により、重複しないランクが付けられます。
関数の解説
=RANK.EQ(A1, $A$1:$A$10,0)+COUNTIF($A$1:A1,A1)-1
RANK.EQ(A1, $A$1:$A$10,0)
: この部分は、A1の値が範囲$A$1:$A$10内でどれくらいの順位にあるかを計算します。最後の引数が0の場合、ランクは降順になります。すなわち、最大値が最小のランクを得ることになります。COUNTIF($A$1:A1,A1)
: この部分は、A1の値より前にすでに出現した同じ値の数をカウントします。これは重複している場合、その値が何回出現したかを数えます。+1
:RANK.EQ
が1から始まるのに対して、COUNTIF
はその値自体も含むため、重複している分だけランクに1を足す必要があります。-1
: 最終的には、COUNTIF
の部分で同じ値自体もカウントしてしまったため、冗長にカウントされた1を差し引くことで、正確なランクが得られます。
この式を使うことで、A列の値に対して重複なく正確なランクが得られます。
まとめ
この手順により、1から10の整数がランダムに生成され、それぞれが重複せずにランク付けされます。
ただし、これらの関数を直接テキストとして入力しても、その都度ランダムな値が生成されるだけで、一度生成された値が保存されないため、その都度手動でセルに値を貼り付ける必要があります。