この記事では、指定したセルの範囲からどれか一つをランダムに出力する方法についてご説明します。
例えば下の画像の通りにセルの範囲(B3からB12)に値が存在しているとします。
そのセルの範囲のうち、どれか一つをランダムで出力したい場合に今回の内容は参考になると思います。
使用するExcel関数
複数の値からどれか一つをランダムに出力するには、次の関数を使います。
今回使用するExcel関数は次の3つになります。
- INDEX
- RANDBETWEEN
- COUNTA
Excel関数を組み合わせて作成した数式(例)
先ほどの3つの関数を使って組み立てたサンプルの数式は次の通りです。
- =INDEX(B3:B12, RANDBETWEEN(1, COUNTA(B3:B12)))
- RANDBETWEENで取得したランダムな整数をINDEX関数の行番号として使用し、その行番号に該当するセルの値を取得します。RANDBETWEENで取得したランダムな整数とは、第1引数で指定された1を最小値、COUNTA関数で取得したB3のセルからB12のセルの数を最大値とします。つまり1から10の間のランダムな値です。
- (今回指定した)B3からB12の10個のセルの中からランダムで選ばれたセルの値
①INDEX関数
INDEX関数は、行と列で指定したセルの値を返します。
第1引数
第1引数には、取得したいセルの範囲を指定します。
例えば以下の画像にある野菜の中からどれか一つを取得したい場合、B3からB12のセルを指定します。
第2引数
第2引数には、第1引数で指定したセルの範囲からどの行を取得するか、その行番号を指定します。
例えば、ニンジンを取得したい場合は3を、キャベツを取得したい場合は5を指定します。
今回はその行番号にRANDBETWEEN関数で発生させた乱数を指定しています。
第2引数にRANDBETWEEN関数で発生させた乱数を指定するということは、B3からB12のどのセルが第2引数に指定されるのか、ランダムに指定されるというわけです。
INDEX関数とRANDBETWEEN関数を組み合わせることで、「指定したセルの範囲からどれか一つをランダムに出力する」ことができます。
第3引数(※今回は省略)
INDEX関数には第3引数に列番号を指定することができますが、今回は省略しています。
なぜ省略したのかというと、第3引数を省略する(指定しない)と列全体を参照するので、参照の指定が不要だからです。
今回はB列だけを参照したいのですが、省略しても事足りてしまうので今回は省略しました。
ただし、列が複数あって、この列は参照したい、という場合は第3引数に列番号を指定する必要があります。
②RANDBETWEEN関数
COLUMN関数は、乱数(ランダムの値)を発生させた整数を返す関数です。
乱数は引数で指定された値の範囲で発生させます。
第1引数
第1引数には発生させる乱数(ランダムの値)の最小値を指定します。
今回は第1引数に1を指定していますが、乱数(ランダムの値)を発生させる最小値が1になります。
第2引数
第2引数には発生させる乱数(ランダムの値)の最大値を指定します。
今回は第2引数にCOUNTA関数(詳細は「③COUNTA関数」で後述します)が返す値を指定していますが、COUNTA関数は指定したセルの範囲のデータ個数を返します。
今回は野菜の品目が入ったセルをセル範囲にしており、その範囲を対象にランダムで名称を取得したいので、そのセルの数を最大値として第2引数に指定しています。
③COUNTA関数
COUNTA関数は、データの個数を取得します。
第1引数
第1引数には、データの個数を調べたいセル範囲を指定します。
今回はB3からB12のセルの個数をカウントするために「B3:B12」を第1引数に指定しています。
「B3:B12」のセルの数は10です。
この10の値がRANDBETWEEN関数の第2引数(発生させる乱数(ランダムの値)の最大値)に指定されます。
実行結果
今回は次のExcelファイルを用意しました。
B3からB12のセルに野菜の品目が入力されています。
この野菜の品目からランダムに一つ選んで、黄色のセル(D3のセル)に出力させます。
黄色のセルに「Excel関数を組み合わせて作成した数式(例)」で紹介した数式(=INDEX(B3:B12, RANDBETWEEN(1, COUNTA(B3:B12))))を入力します。
数式が入力されると、以下のようにランダムで野菜の品目が黄色に出力されます。
最後に
この記事では、指定したセルの範囲からどれか一つをランダムに出力する方法についてご説明しました。
セルの範囲の中のどれか一つをランダムで取得したい場合は本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。