• 公開日:

Excelでランダムに並び替える方法

Excelで値をランダムに並び替える方法をご紹介します。

リストをランダムに並べ替えて席順を決めたい場合や、抽選やくじ引きなどを行う際にお役立てください。

また、アンケートや試験問題などの順序をランダムに入れ替えたい場合などにも役立ちます。

Excelでランダムに並び替える方法

Excelで値をランダムに並び替える方法をご紹介します。

縦方向にランダムに並び替える

値を縦方向にランダムに並び替えるにはRAND関数を使います。

RAND関数の書式は「=RAND()」で、引数はありません。入力するだけで0以上1未満の乱数を作成します。

RAND関数の詳細や使い方などについては以下の記事をご確認ください。

ExcelのRAND関数の使い方|0以上1未満の乱数を発生させる

RAND関数を入力する

今回は、上記の画像のA2セルからB8セルのリストをランダムに並び替えます。

A列の生徒番号とB列の名前は一緒に移動するように設定します。

リストの隣の列に「=RAND()」と入力し、Enterを押します。

オートフィルでコピーする

RAND関数で乱数が作られました。他のセルにもオートフィルでコピーします。

セルの右下にあるフィルハンドルをドラッグします。

セルを範囲選択してtabキーで移動する

リストすべてに乱数が作られました。

ランダムに並べ替えたいセル範囲を選択します。

そのままキーボードのtabキーを2回押して、アクティブセルをRAND関数が入ったセルにします。

昇順を選択する

アクティブセルが、RAND関数が入力されたセルになりました。セルが白くなっていれば正しくアクティブにできています。

次にリストをランダムに並べ替えます。

「データ」タブ、②「昇順」の順に選択します。

ランダムに並べ替えできた

リストをランダムで並び替えできました。

「昇順」を選択する度にランダムに並べ替えできます。

横方向にランダムに並び替える

横方向に値をランダムに並び替える方法をご紹介します。

RAND関数を入力する

任意のセルに「=RAND()」と入力し、Enterを押します。

オートフィルでコピーする

RAND関数で乱数が作られました。他のセルにもオートフィルでコピーします。

セルの右下にあるフィルハンドルをドラッグします。

並べ替えを選択する

並び替えたいセル範囲を選択します。

「データ」タブ、③「並べ替え」の順に選択します。

オプションボタンを押す

「並べ替え」ダイアログボックスが表示されます。

「オプション」ボタンを押します。

列単位を選択してOKボタンを押す

「並べ替えオプション」ダイアログボックスが表示されます。

①方向で「列単位」を選択して、②「OK」ボタンを押します。

RAND関数を入力した行を選択してOKボタンを押す

「並べ替え」ダイアログボックスに戻ります。

①最優先されるキーでRAND関数を入力した行を選択します。今回は表の3行目にRAND関数を入力しているので「行3」を選択します。

「OK」ボタンを押します。

ランダムに並び替わる

値をランダムに横方向で並び替えできました。

VBAを使ってボタンでランダムに並び替える

VBAを使って値をランダムに並び替えるマクロをボタンを作成する方法をご紹介します。

マクロボタンを作っておくと、ボタンを押すだけでリストを何度でもランダムに並び替えできるので便利です。

開発タブを表示する

今回はVBAを使って設定を行います。

VBAの設定には「開発タブ」が必要ですが、デフォルトでは表示されていないため下記の記事を参考に設定を行いましょう。

エクセルの開発タブを表示する方法

Visual Basicを選択する

今回はA列にあるA2セルからA9セルまでの名前リストを、ランダムで並び替えるマクロボタンを作成します。

「開発」タブ、②「Visual Basic」の順に選択します。

標準モジュールを選択する

「Microsoft Visual Basic for Applications」ダイアログボックスが表示されます。

「挿入」、②「標準モジュール」の順に選択します。

コードを貼り付ける

標準モジュールが挿入されました。

以下のコードをコピーして貼り付けます。「指定したセルにあるリストをランダムで並び替える」という意味のコードです。

Sub リストをランダムに並べ替える()
    Dim 名前リスト As Range
    Dim i As Integer, j As Integer
    Dim ランダム番号 As Integer
    Dim 一時的な名前 As String

    Set 名前リスト = Range("A2:A9")

    Randomize

    For i = 1 To 名前リスト.Rows.Count
        ランダム番号 = Int((名前リスト.Rows.Count - i + 1) * Rnd + i)
        一時的な名前 = 名前リスト.Cells(ランダム番号, 1).Value
        名前リスト.Cells(ランダム番号, 1).Value = 名前リスト.Cells(i, 1).Value
        名前リスト.Cells(i, 1).Value = 一時的な名前
    Next i
End Sub

並び替えるセルを変更したい場合は、7行目の「Set 名前リスト = Range("A2:A9")」内にある「A2:A9」のセル番地を変更しましょう。

保存ボタンを押す

コードを貼り付けたら、「保存」を選択します。

保存する

「名前を付けて保存」ダイアログボックスが表示されます。

ファイルの種類で「Excel マクロ有効ブック」を選択し、②保存ボタンを押します。

ボタンを選択sる

マクロが作成できました。次にマクロボタンを作成します。

「挿入」、②フォームコントロールの「ボタン(フォーム コントロール)」の順に選択します。

ボタンを描画する

マウスポインターが十字マークになったら、任意の位置でドラッグしてボタンを描画します。

OKボタンを押す

描画が終わると、「マクロの登録」ダイアログボックスが自動的に表示されます。

作成したマクロを選択し、②「OK」ボタンを押します。

右クリックしてテキストを編集する

マクロボタンが作成できました。

ボタンの名前を変更する場合は、①マクロボタンを右クリックして、②「テキストの編集」を選択します。

任意のテキストを選択する

任意の名前を入力します。

ボタンを押す

値をランダムで入れ替えるマクロボタンが作成できました。

ボタンを押すと、A2セルからA9セルにあるリストがランダムで並べ替えられます。