Excelで簡単にリストの行をランダムに並べ替える方法 – サンプルコード付き
この記事では、Excelでリストの行をランダムに並べ替える方法をご紹介します。これにより、データをシャッフルしてランダムな順序で表示できます。VBAコードを使用して、事前に選択された範囲の行をランダムに並べ替える方法を説明します。さらに、先頭行を見出しとして固定するかどうかを選択できるようにする方法も紹介します。
サンプルコード
以下のVBAコードを使用して、Excelでリストの行をランダムに並べ替えることができます。
Sub RandomizeSelectedRows()
Dim rng As Range
Dim keepHeader As Boolean
keepHeader = False ' 先頭行をデータの一部として扱う
On Error Resume Next
Set rng = Selection ' 事前に選択された範囲を取得
On Error GoTo 0
If rng Is Nothing Then Exit Sub ' 範囲が選択されていない場合
RandomizeRows rng, keepHeader
End Sub
Sub RandomizeRows(rng As Range, Optional keepHeader As Boolean = True)
Dim i As Long, j As Long
Dim temp As Variant
Dim rowCount As Long
Application.ScreenUpdating = False
rowCount = rng.Rows.Count
If keepHeader Then rowCount = rowCount - 1
For i = rng.Rows.Count To IIf(keepHeader, 2, 1) Step -1
j = WorksheetFunction.RandBetween(IIf(keepHeader, 2, 1), i)
If i <> j Then
temp = rng.Rows(i).Value
rng.Rows(i).Value = rng.Rows(j).Value
rng.Rows(j).Value = temp
End If
Next i
Application.ScreenUpdating = True
End Sub
使い方
- Excelを開いて、VBAエディタ(Alt + F11)を開きます。
- 「挿入」メニューから「標準モジュール」を選択して、新しいモジュールを作成します。
- 上記のコードを新しいモジュールにコピーします。
- データが入力されているワークシートに戻ります。
- ランダムに並べ替えたい範囲を選択します。
- 「RandomizeSelectedRows」マクロを実行します。(Alt+F8から)。
- 選択された範囲の行がランダムに並べ替えられます。
先頭行を見出し行として扱う場合
上記のコードは、先頭行をデータの一部として扱い、ランダムに並べ替えます。先頭行を見出し行として扱い、並べ替えから除外する場合は、「keepHeader = False」となっている行を「keepHeader = True」に変更してください。
サンプルデータで試す
以下のサンプルデータを使って、上記のコードを試してみましょう。
| ID | 氏名 | 年齢 |
|---|---|---|
| 1 | 山田太郎 | 25 |
| 2 | 鈴木花子 | 32 |
| 3 | 佐藤次郎 | 41 |
| 4 | 高橋和子 | 35 |
| 5 | 田中悠子 | 22 |
このサンプルデータをExcelに入力し、先頭行を見出し行として扱いたい場合、「keepHeader = True」に設定して実行してみてください。この設定では、先頭行が固定され、残りの行がランダムに並べ替えられます。
まとめ
この記事では、Excelでリストの行をランダムに並べ替える方法をご紹介しました。VBAコードを使用して、事前に選択された範囲の行をランダムに並べ替えることができます。また、先頭行を見出しとして固定するかどうかを選択できるようにする方法も紹介しました。データをシャッフルしてランダムな順序で表示する場合に、この方法が役立ちます。是非、実際に試してみて、リストの行を簡単にランダムに並べ替える方法をマスターしてください。
注意点
このVBAコードを使用する際には、元のデータが上書きされるため、必ず事前にバックアップを取ることをお勧めします。また、ランダム化が正しく機能することを確認するために、まずはサンプルデータで試してから本番のデータで使用してください。
コメント