Sheet基本
RAND・RANDBETWEEN 完全ガイド
RAND・RANDBETWEEN 完全ガイド
乱数生成とサンプリング・くじ引きへの応用
ランダム性が必要な場面で活躍する関数。テストデータの生成、無作為抽出、くじ引き順の作成など、実務で使えるランダム処理のパターンを解説する。
GASとの関係:Math.random() に対応
GASの Math.floor(Math.random() * (max - min + 1)) + min は RANDBETWEEN と同じです。ただしRANDBETWEENは再計算のたびに値が変わるため、固定したい場合はGASで生成して値として貼り付けが有効です。
目次
RAND — 0以上1未満の乱数
=RAND() // 0.0〜0.99...の乱数(引数なし)
RANDは引数なしで使います。シートの再計算のたびに値が変わります(揮発性関数)。
RANDBETWEEN — 整数の乱数
=RANDBETWEEN(最小値, 最大値)
=RANDBETWEEN(1, 10) // 1〜10のランダムな整数
=RANDBETWEEN(0, 100) // 0〜100のランダムな整数
=RANDBETWEEN(1, 6) // サイコロ(1〜6)
実務でよく使うパターン
パターン1:無作為抽出(ランダムソート)
// B列にRAND()を入れてA列のデータをシャッフル
// B2: =RAND() (B2:B100に同じ式)
// 次にB列を基準にソートするとランダム順になる
// SORT+RAND()で動的にシャッフル
=SORT(A2:A100, ARRAYFORMULA(RAND()), 1)
パターン2:くじ引き順(1〜Nの無重複ランダム)
// RANK+RAND()で1〜Nの重複しない順位を生成
=RANK(RAND(), ARRAYFORMULA(RAND()))
// ※ B列すべてに=RAND()を入れてC列でRANK処理する
// よりシンプルな方法:RAND列をソートして行番号で順位付け
パターン3:テストデータの生成
// 1〜1000のランダムな売上金額
=RANDBETWEEN(10000, 1000000)
// ランダムな日付(2024年内)
=DATE(2024, RANDBETWEEN(1,12), RANDBETWEEN(1,28))
パターン4:ランダムなリストからの抽出
// A1:A10の中からランダムに1つ選ぶ
=INDEX(A1:A10, RANDBETWEEN(1, COUNTA(A1:A10)))
揮発性関数の注意点
RANDとRANDBETWEENはセルが再計算されるたびに値が変わります。結果を固定したい場合はコピーして「値として貼り付け」(Ctrl+Shift+V)するか、GASで生成して直接書き込む方法を使います。
// GASで固定値として生成して書き込む例
function generateRandomValues() {
const sheet = SpreadsheetApp.getActiveSheet();
const values = Array.from({length: 100}, () => Math.floor(Math.random() * 1000));
sheet.getRange("A1:A100").setValues(values.map(v => [v]));
}
この知識をGASで活かす
テストデータを大量に生成したい場合やランダムサンプリングを自動化したい場合は、GASのMath.random()でデータを生成してシートに書き込む方法が再計算の影響を受けず確実です。
Free Newsletter
AIを業務に活かしたいなら
SMR-Labメルマガ
毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。

