列内の選択したセルをシャッフルできるマクロは次のとおりです。
Option Explicit
Sub ShuffleSelectedCells()
'Do nothing if selecting only one cell
If Selection.Cells.Count = 1 Then Exit Sub
'Save selected cells to array
Dim CellData() As Variant
CellData = Selection.Value
'Shuffle the array
ShuffleArrayInPlace CellData
'Output array to spreadsheet
Selection.Value = CellData
End Sub
Sub ShuffleArrayInPlace(InArray() As Variant)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShuffleArrayInPlace
' This shuffles InArray to random order, randomized in place.
' Source: http://www.cpearson.com/excel/ShuffleArray.aspx
' Modified by Tom Doan to work with Selection.Value two-dimensional arrays.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim J As Long, _
N As Long, _
Temp As Variant
'Randomize
For N = LBound(InArray) To UBound(InArray)
J = CLng(((UBound(InArray) - N) * Rnd) + N)
If J <> N Then
Temp = InArray(N, 1)
InArray(N, 1) = InArray(J, 1)
InArray(J, 1) = Temp
End If
Next N
End Sub
コメントを読んで、マクロが何をしているのかを確認できます。マクロをインストールする方法は次のとおりです。
- VBAエディターを開きます(Alt + F11)。
- 現在開いているスプレッドシート(「VBAProject」の後に括弧で囲まれています)の下にある「ThisWorkbook」を右クリックし、「Insert/Module」を選択します。
- 上記のコードを貼り付けて、スプレッドシートを保存します。
これで、「ShuffleSelectedCells」マクロをアイコンまたはホットキーに割り当てて、選択した行をすばやくランダム化できます(行の選択できる列は1つだけであることに注意してください)。