DRYな備忘録

Don't Repeat Yourself.

Googleスプレッドシートで値の抽選

問題

こういうリストがあって、ここからランダムに値を抽出したい。

解決

= INDEX(A:A, RANDBETWEEN(1, COUNTA(A:A)), 1)

おしまい

解説

  • INDEX: 値を参照、行、列を指定して取得する
  • RANDBETWEEN: 2つの整数の間の数をランダムに返す
  • COUNTA: 参照における値のあるセルの数を返す
= INDEX(
    A:A, '← INDECの第1引数(参照)候補値の一覧。今回はA列全体
    RANDBETWEEN(
        1, '← 1行めから抽出したいので1
        COUNTA(A:A) '← 値があるぶんだけ抽出したいのでCOUNTA
    ),  '← INDEXの第2引数(行)RANDBETWEENの出力が入る
    1  '← INDEXの第3引数(列)今回はA列固定なので1
)

注意

  • それぞれのセルが独立してRANDを計算するので、複数抽出した場合に重複を許します
  • COUNTAが値の歯抜けに対して弱いという話をどっかで見ましたが、とりあえず動いたんで検証してません 🤪

DRYな備忘録として