這裏有一個宏,可以讓你選擇的洗牌中的單元格列:
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」,然後選擇插入/模塊。
- 粘貼上面的代碼並保存電子表格。
現在,您可以將「ShuffleSelectedCells」宏指定給圖標或熱鍵,以快速隨機化所選行(請注意,您只能選擇一列行)。
這是一個非常簡單的方法,如果不需要,不需要複雜化。 – datatoo 2012-07-13 20:04:32
我通常添加一個帶有隨機值的單獨列('= RAND()'),然後在該列上執行排序。不知道這是否是最好的或最快的方式,但肯定會完成這項工作。 – mariusnn 2012-07-13 20:04:46
將「RAND」限制爲大約一百萬個數字僅適用於早期版本的Excel。由於Excel 2003已經解決。請參閱[此Microsoft連接](http://support.microsoft.com/kb/828795) – 2012-07-14 03:15:38