Excelで簡単にリストの行をランダムに並べ替える方法 – サンプルコード付き

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

使い方

  1. Excelを開いて、VBAエディタ(Alt + F11)を開きます。
  2. 「挿入」メニューから「標準モジュール」を選択して、新しいモジュールを作成します。
  3. 上記のコードを新しいモジュールにコピーします。
  4. データが入力されているワークシートに戻ります。
  5. ランダムに並べ替えたい範囲を選択します。
  6. 「RandomizeSelectedRows」マクロを実行します。(Alt+F8から)。
  7. 選択された範囲の行がランダムに並べ替えられます。

先頭行を見出し行として扱う場合

上記のコードは、先頭行をデータの一部として扱い、ランダムに並べ替えます。先頭行を見出し行として扱い、並べ替えから除外する場合は、「keepHeader = False」となっている行を「keepHeader = True」に変更してください。

サンプルデータで試す

以下のサンプルデータを使って、上記のコードを試してみましょう。

ID氏名年齢
1山田太郎25
2鈴木花子32
3佐藤次郎41
4高橋和子35
5田中悠子22

このサンプルデータをExcelに入力し、先頭行を見出し行として扱いたい場合、「keepHeader = True」に設定して実行してみてください。この設定では、先頭行が固定され、残りの行がランダムに並べ替えられます。

まとめ

この記事では、Excelでリストの行をランダムに並べ替える方法をご紹介しました。VBAコードを使用して、事前に選択された範囲の行をランダムに並べ替えることができます。また、先頭行を見出しとして固定するかどうかを選択できるようにする方法も紹介しました。データをシャッフルしてランダムな順序で表示する場合に、この方法が役立ちます。是非、実際に試してみて、リストの行を簡単にランダムに並べ替える方法をマスターしてください。

注意点

このVBAコードを使用する際には、元のデータが上書きされるため、必ず事前にバックアップを取ることをお勧めします。また、ランダム化が正しく機能することを確認するために、まずはサンプルデータで試してから本番のデータで使用してください。

コメント