問題
こういうリストがあって、ここからランダムに値を抽出したい。
解決
= 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な備忘録として