RAND関数
RAND関数は、0以上で 1 より小さい乱数を生成する関数です。
例:【A1:B5】に乱数を表示します。
=RAND()
乱数の更新
RAND関数で生成した数値を更新したい場合は≪ F9 ≫を押します。
※セルを選択する必要はありません。RAND関数の入ったセルすべてが更新されます。
キーボードの一番上に並んでるファンクションキーの≪ F9 ≫だね!
ボタンで更新する場合は[数式]タブ-計算方法グループの「再計算実行」をクリックします。
RAND関数で生成した数値は、自動更新もします。
更新するタイミングは、セルに入力や編集をして≪ Enter ≫キーを押した時や≪ Del ≫キーを押した時、オートフィルをした時、並べ替えボタンを押した時など…あらゆるシーンです。
いや、勝手に更新されすぎ!
乱数を固定する(更新させない)
RAND関数でクジの当選者を決める場合、知らない間に更新されて当選者が変わってしまっては困ります。
次は、表示された乱数を固定させる方法です。
ボタンで更新させないようにする
乱数を自動更新させない方法の一つで、ボタンを使います。
[数式]タブ-計算方式グループ「計算方法の設定」ボタンの「手動」をクリックしてチェックをつけます。
(デフォルトは自動にチェックが入っています)
これで更新は≪ F9 ≫をクリック、または「再計算実行」ボタンを押した時のみになります。
ただし、この方法は他の関数も自動更新しなくなります。
(数値を変えてもSUM関数の合計が再計算されないなど)
生成した値のみをコピーする
更新した直後にコピーして、値のみ(関数の結果の数値のみ)を貼り付ける方法です。
貼り付けたデータは関数ではないので更新しても変わりません。
RAND関数を入力したセル範囲を≪ Ctrl + C ≫またはコピーボタンでコピーします。
貼り付け方は簡単な方法から3つ紹介します。
A:右クリックでコピー
貼り付けたい範囲の左上のセルで右クリックし、貼り付けのオプションから「値」をクリックします。
※ボタンを押す前に他のボタンに触れてプレビュー表示されると、自動更新が行われ数値が変わるので注意しましょう。
B:貼り付けボタン一覧からコピー
貼り付けたい範囲の左上のセルをクリックし、[ホーム]タブ-クリップボードグループ「貼り付け」ボタンの矢印から「値」ボタンをクリックします。
※ボタンを押す前に他のボタンに触れてプレビュー表示されると、自動更新が行われ数値が変わるので注意しましょう。
C:形式を選択して貼り付けからコピー(最もミスしない方法)
貼り付けたい範囲の左上のセルをクリックし、[ホーム]タブ-クリップボードグループ「貼り付け」ボタンの矢印から「形式を選択して貼り付け」をクリックします。
※ボタンを押す前に他のボタンに触れてプレビュー表示されると、自動更新が行われ数値が変わるので注意しましょう。
形式を選択して貼り付けダイアログボックスから「値」にチェックを入れて「OK」を押します。
これで数式の結果の値だけが貼り付き、更新されない数値になりました。
ただし、最初にコピーした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関数を入力します。
C列(C2)に入れる数式は、IF関数とRANK.EQ関数の組み合わせです。
(3人を当選とする設定で作っています)
=IF(RANK.EQ(D2,$D$2:$D$9)<=3,”〇当選”,””)
【D2】の順位を【D2:D9】の中で求め、3位以内であれば「〇当選」と表示させ、そうでなければ非表示にする。
当選を2人にする場合は「3」を「2」に変更します。
実際に順位を求めたいわけではなく、3人を抽出するのに使い勝手の良い関数であるため使用しています。
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」を押して完了です。
これで当選者に塗りつぶしが設定されました。
ただし、自動更新ですぐに当選者が変わってしまいます。
結果表示の直後に、上記の値のみのコピーや自動更新させない設定などが必要です。
必要に応じて上記で解説したセルの非表示やマクロボタンを作ります。