従業員(または製品、ウィジェットなど)のリストがあり、このリストからランダムに2つのアイテムを選択するとします。

RANDOMやRANDBETWEENなど、リストからアイテムを選択するために使用できるワークシート関数がいくつかあります。

RANDBETWEEN関数は非常に簡単で、範囲内の乱数を提供するため、多くの人がRANDBETWEEN関数を使用します。したがって、リストに25個のアイテムがある場合、RANDBETWEENは1から25までの数値を返すことができ、これはリスト内のアイテムに対応することができます。

たとえば、アイテムのリストがA2:A26の範囲にあり、この範囲にItemsという名前を付けたとします。次に、セルC2に次の数式を入力して、1からアイテムの数までの数値を返すことができます。

=RANDBETWEEN(1,ROWS(Items))

この数式をセルC3にコピーすると、リストの項目を表す2つの乱数ができます。セルD2とD3に、次のような数式を入力して、リストから実際の名前を取得できます。

=INDEX(Items,C2)

このアプローチの唯一の問題は、RANDBETWEENの両方のインスタンス(セルC2とC3)が同じ値を返す可能性があるため、リストから同じアイテムが2回選択されることです。

この潜在的な問題を回避する1つの方法は、リストから2つではなく3つの項目を実際に選択することです。最初の2つのアイテムが同じである場合、3番目のアイテムを「フォールバック」アイテムとして使用して、一意の2番目のアイテムを提供できます。この方法は絶対確実ではありません。3つすべてが同じになる可能性はありますが、ほとんどあり得ないからです。

リストからアイテムを選択する別の方法は、各アイテムに独自のランダム値を割り当ててから、シリーズの最大数に基づいて選択することです。 RANDOM関数は、0から1までのランダムな値を返します。列Bの各セルで、列Aの各項目のすぐ右側に、次の数式を入力します。

=RAND()

セルの範囲(B2:B26)を選択し、ItemNumsなどの名前を使用して範囲に名前を付けます。次に、次の配列数式を使用して、リストから最初のランダムな名前を決定できます。

=OFFSET(A$1,SUM((LARGE(ItemNums,1)=(ItemNums))*ROW(ItemNums))-1,0)

これが配列数式であることを示すには、Shift + Ctrl + Enterを押して入力します。数式は単一の名前を返す必要があります。次に、次の配列数式を使用して2番目の名前を返すことができます。

=OFFSET(A$1,SUM((LARGE(ItemNums,2)=(ItemNums))*ROW(ItemNums))-1,0)

RAND関数アプローチを使用する方がRANDBETWEENを使用するよりもうまく機能する理由は、RANDが2つの同一の値を返す可能性が非常に小さいのに対し、RANDBETWEENが返す可能性がはるかに高いためです。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2874)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。