RAND関数で作る抽選やランダム並べ替えとマクロ【Excel】

アイキャッチ_ランダム並べ替えと抽選をRANDで
目次

RAND関数

RAND関数は、0以上で 1 より小さい乱数を生成する関数です。

=RAND()
※引数には何も入れません。
※更新する度に新しい乱数を生成します。
※セルに入らない桁は四捨五入されます。

例:【A1:B5】に乱数を表示します。
=RAND()

RAND関数を入力した例

乱数の更新

RAND関数で生成した数値を更新したい場合は≪ F9 ≫を押します。
※セルを選択する必要はありません。RAND関数の入ったセルすべてが更新されます。

キーボードの一番上に並んでるファンクションキーの≪ F9 ≫だね!

ボタンで更新する場合は[数式]タブ-計算方法グループの「再計算実行」をクリックします。

再計算実行ボタン

RAND関数で生成した数値は、自動更新もします。
更新するタイミングは、セルに入力や編集をして≪ Enter ≫キーを押した時や≪ Del ≫キーを押した時、オートフィルをした時、並べ替えボタンを押した時など…あらゆるシーンです。

いや、勝手に更新されすぎ!

乱数を固定する(更新させない)

RAND関数でクジの当選者を決める場合、知らない間に更新されて当選者が変わってしまっては困ります。
次は、表示された乱数を固定させる方法です。

ボタンで更新させないようにする

乱数を自動更新させない方法の一つで、ボタンを使います。
[数式]タブ-計算方式グループ「計算方法の設定」ボタンの「手動」をクリックしてチェックをつけます。
(デフォルトは自動にチェックが入っています)

計算方式を手動にするボタン

これで更新は≪ F9 ≫をクリック、または「再計算実行」ボタンを押した時のみになります。
ただし、この方法は他の関数も自動更新しなくなります。
(数値を変えてもSUM関数の合計が再計算されないなど)

生成した値のみをコピーする

更新した直後にコピーして、値のみ(関数の結果の数値のみ)を貼り付ける方法です。
貼り付けたデータは関数ではないので更新しても変わりません。

RAND関数を入力したセル範囲を≪ Ctrl + C ≫またはコピーボタンでコピーします。

RAND関数の範囲を選択

貼り付け方は簡単な方法から3つ紹介します。

A:右クリックでコピー

貼り付けたい範囲の左上のセルで右クリックし、貼り付けのオプションから「」をクリックします。
※ボタンを押す前に他のボタンに触れてプレビュー表示されると、自動更新が行われ数値が変わるので注意しましょう。

右クリックで値のみ貼り付けのボタン
B:貼り付けボタン一覧からコピー

貼り付けたい範囲の左上のセルをクリックし、[ホーム]タブ-クリップボードグループ「貼り付け」ボタンの矢印から「」ボタンをクリックします。
※ボタンを押す前に他のボタンに触れてプレビュー表示されると、自動更新が行われ数値が変わるので注意しましょう。

値だけを貼り付けボタン
C:形式を選択して貼り付けからコピー(最もミスしない方法)

貼り付けたい範囲の左上のセルをクリックし、[ホーム]タブ-クリップボードグループ「貼り付け」ボタンの矢印から「形式を選択して貼り付け」をクリックします。
※ボタンを押す前に他のボタンに触れてプレビュー表示されると、自動更新が行われ数値が変わるので注意しましょう。

形式を選択して貼り付けボタン

形式を選択して貼り付けダイアログボックスから「」にチェックを入れて「OK」を押します。

形式を選択して貼り付けダイアログの値チェック

これで数式の結果の値だけが貼り付き、更新されない数値になりました。
ただし、最初にコピーしたRAND関数の入ったセルは自動更新されて数値が変わります。

RAND関数の値のみを貼り付けた結果

ランダム並べ替えボタン:マクロ

RAND関数を使ってランダムに並べ替えするマクロボタンを作ります。
ボタンを押すたびにB列の名前が入れ替わるようにします。

マクロのボタンでランダム並べ替え

マクロは初心者でも簡単にできるよ!

ベースを作る

A列に順番を入力、B列には名前、C列にはRAND関数「=RAND()」を入力します。

ランダム並べ替えのベースを作る

マクロの記録

今回作るマクロの内容は2ステップです。
1.F9で更新する
2.RAND関数の結果を並べ替えする

[表示]タブ-マクログループの[マクロ]ボタンから「マクロの記録」をクリックします。

マクロの記録ボタン

マクロの記録ダイアログボックスが表示されます。
マクロに付ける名前を入力します。
今回は「並べ替え」としました。それ以外はそのままで「OK」をクリックます。
「OK」を押すと「記録終了」ボタンを押すまで、すべての操作がVBAで記録されていきます。

マクロの記録ダイアログボックス

1.F9を押して更新します。

2-1.並べ替えたい範囲【B2:C9】を範囲選択します。
 ※A列の順番はそのままにしておきたいので範囲選択に含みません。

並べ替えたい範囲を選択

2-2.[データ]タブ-並べ替えとフィルターグループの「並べ替え」をクリックします。

データタブ並べ替えボタン

2-3.最優先されるキーを「列C」にし、順序から「小さい順」を選択して「OK」をクリックします。
 ※1行目の見出しを範囲に含めていないので、右上の「先頭行をデータの見出しとして使用する」はオフです。
 ※順序は並べ替え自体が目的であるため「大きい順」でも問題ありません。

並べ替えダイアログボックス

3.【A1】をクリックします。
(マクロ実行後のセル位置の指定です。特に指定する理由がなければA1がきれいな終了位置です)

記録したい内容はここまでなので、記録を終了します。

[表示]タブ-マクログループの「マクロ」ボタンから「記録終了」をクリックします。

マクロの記録終了ボタン

ステータスバーのマクロの記録停止ボタンをクリックしても記録終了します。

ステータスバーのマクロの記録停止ボタン

マクロファイルは拡張子.xlsmで保存

マクロを使用したファイルはそのまま上書きしてもマクロは有効になりません。
Excelは通常「.xlsx」という拡張子ですが、マクロ有効の拡張子「.xlsm」で保存する必要があります。

名前を付けて保存する際にファイルの種類から「マクロ有効ブック」を選択します。

マクロ有効ブックで保存

セキュリティの警告

パソコンで、初めて開くマクロ有効ブックは「セキュリティの警告」が出ます。
もし故意に悪いことをするマクロが使われていた場合実行するのは危険なため、アプリが一旦マクロを無効にします。

セキュリティの警告とコンテンツの有効化

自分で作ったファイルや、安全なマクロだと分かっている場合は「コンテンツの有効化」をクリックします。
これでマクロが使えるようになります。

一度有効化すると、次回から同じパソコンで同じファイルを開いた時、セキュリティの警告は表示されなくなります。

マクロ実行用ボタンを作る

図形のツールを使ってボタンをデザインします。
ここでは、角丸長方形に、図形のスタイルから「光沢-緑、アクセント6」を選択し、白の枠線2.25pt幅でつけました。
文字は、図形を選択した状態で入力するとボタンの上に表示されます。
[ホーム]タブから「中央揃え」と「上下中央揃え」ボタンをクリックすると文字が中央に配置されます。

ボタンのデザイン

ボタンのデザインについて詳しくは以下の記事をご覧ください。こちらはWordですが設定はそれほど変わりません。

作ったボタンを任意の位置に配置します。
ボタンを右クリックし、一覧の中から「マクロの登録」をクリックします。

右クリックでマクロの登録

マクロの登録ダイアログボックスが表示されるので、登録したいマクロ「並べ替え」を選択し「OK」をクリックします。

ボタンにマクロを登録する

図形にマウスポインタを合わせると指マークに変わり、ボタンを押すと並べ替えのマクロが一瞬で実行されるようになります。

※マクロ登録後に図形の編集をする場合は≪ Ctrl +クリック≫します。

ランダム関数のセルを非表示にする

【C列】のデータは並べ替えを行う上で必要ですが、見る人には不要なデータです。

非表示にする範囲を選択

そこで【C1:C9】に入力されたデータを非表示にします。
関数に影響がないように、データは入れたまま見た目だけ消します。

【C1:C9】を範囲選択し≪ Ctrl + 1 ≫(テンキーではなく上の数字の1)でセルの書式設定ダイアログボックスを表示します。
[表示形式]タブで分類を「ユーザー定義」にし、種類のボックスに「;;;(半角セミコロン3つ)」を入力します。

セルを非表示にする表示形式

これでデータはそのままで表示はされなくなり、すっきりしました。
データを確認したい場合は、セルをクリックすると数式バーに表示されます。

セルを非表示にして完成

セルの非表示について詳しくはこちらの記事をご覧ください。

ランダム抽選(選出)

RAND関数を使ってクジの抽選や、係の選出などを行います。
結果を文字や記号で表示する方法と、塗りつぶしなどの書式を設定する方法の2つを紹介します。

関数で結果を表示

関数を使って、ランダムに選んだ結果「〇当選」を名前の横に表示する方法です。

関数でクジ当選の結果を表示

この表では、B列の名前の横に当選結果を表示したいので、C列は空けてD列にRAND関数を入力します。

RAND関数を入力しておく

C列(C2)に入れる数式は、IF関数とRANK.EQ関数の組み合わせです。
(3人を当選とする設定で作っています)

=IF(RANK.EQ(D2,$D$2:$D$9)<=3,”〇当選”,””)

【D2】の順位を【D2:D9】の中で求め、3位以内であれば「〇当選」と表示させ、そうでなければ非表示にする。

当選を2人にする場合は「3」を「2」に変更します。
実際に順位を求めたいわけではなく、3人を抽出するのに使い勝手の良い関数であるため使用しています。

IF関数についてはこちらをクリックしてください。

RANK.EQ関数について詳しくは以下の記事をご覧ください。

数式に入る$マークについて詳しくは以下の記事をご覧ください。

これで当選が表示されました。
ただし、自動更新ですぐに当選者が変わってしまいます。
結果表示の直後に、上記の値のみのコピーや自動更新させない設定などが必要です。

当選結果が表示された図

必要に応じて上記で解説したセルの非表示やマクロボタンを作ります。

色で結果を表現(条件付き書式)

条件付き書式を使って、ランダムに選んだ名前のセルに塗りつぶしを設定する方法です。

当選者のセルを条件付き書式で塗りつぶす

C列にRAND関数「=RAND()」を入力します。

ランダム並べ替えのベースを作る

塗りつぶしを設定したい範囲【B2:B9】を範囲選択します。

条件付き書式を設定したい範囲を選択

[ホーム]タブ-スタイルグループ「条件付き書式」から「新しいルール」を選択します。

条件付き書式ボタン
新しいルールボタン

「新しい書式ルール」ダイアログボックスが表示されます。

1.ルールの種類から「数式を使用して、書式設定するセルを決定」を選択し
2.次の数式を満たす場合に値を書式設定のボックスに数式を入力します。
 ※アクティブセルに入れる数式を入力します。(ここでは【B2】)
 =RANK.EQ(C2,$C$2:$C$9)<=3 
「【C2】の順位を【C2:C9】の中で求めた結果が3位以内」という条件式になります。
3.右下の「書式」ボタンを押し、この条件を満たしたセルの書式を設定します。

数式を使用して書式設定するセルを決定

「セルの書式設定」ダイアログボックスでは[塗りつぶし]タブをクリックし、任意の色を選択します。
最後に「OK」を押し、もう一度「OK」を押して完了です。

セルの書式設定ダイアログで塗りつぶしを設定

これで当選者に塗りつぶしが設定されました。
ただし、自動更新ですぐに当選者が変わってしまいます。
結果表示の直後に、上記の値のみのコピーや自動更新させない設定などが必要です。

当選者に書式を設定した図

必要に応じて上記で解説したセルの非表示やマクロボタンを作ります。

スポンサーリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次