2012-07-13 99 views
39

如何隨機化Excel中的大量行?如何隨機化Excel行

For example I have an excel sheet with data in 3 rows. 
1 A dataA 
2 B dataB 
3 C dataC 

I want to randomize the row order. For example 
2 B dataB 
1 A dataA 
3 C dataC 

我可以創建一個新列,並使用= RAND()填充隨機數並根據該列進行排序。

但這是最好的方法嗎?蘭德公式將提供高達a million random numbers,我有25萬行,所以它看起來會工作。

感謝

我搜索了一下,而this answer about randomizing columns接近它似乎像這樣矯枉過正。

+3

這是一個非常簡單的方法,如果不需要,不需要複雜化。 – datatoo 2012-07-13 20:04:32

+4

我通常添加一個帶有隨機值的單獨列('= RAND()'),然後在該列上執行排序。不知道這是否是最好的或最快的方式,但肯定會完成這項工作。 – mariusnn 2012-07-13 20:04:46

+1

將「RAND」限制爲大約一百萬個數字僅適用於早期版本的Excel。由於Excel 2003已經解決。請參閱[此Microsoft連接](http://support.microsoft.com/kb/828795) – 2012-07-14 03:15:38

回答

52

也許整列隨機數並不是最好的方式,但它似乎可能是@mariusnn提到的最實用的方法。

關於這一點,這跺着腳我要與Office 2010一段時間,而通常回答像the one in lifehacker的工作,我只是想分享是唯一需要的數量額外的步驟:

  1. 創建旁邊你將隨機
  2. 鍵入=rand()新列的第一個單元格的列表新列 - 這會產生0和1
  3. 之間的隨機數填充與公式列。要做到這一點最簡單的方法可能是:

    • 下去沿新列,直到要隨機
    • 按住Shift鍵並單擊最後一個單元格
    • 按Ctrl最後一個單元+ D
  4. 現在您應該有一列相同的數字,即使它們都是隨機生成的。

    Random numbers... that are the same...

    這裏的關鍵是要重新計算它們!轉到公式選項卡,然後單擊立即計算(或按F9)。

    Actually random numbers!

    現在列中的所有數字將被實際隨機生成的。

  5. 轉到首頁選項卡並單擊排序&篩選。選擇你想要的訂單(最小到最大最大到最小) - 無論哪一個都會給你一個與原始訂單相關的隨機訂單。然後點擊確定,當排序警告提示您至展開選擇

  6. 你的名單應該是隨機的!如果你願意,你可以擺脫隨機數字的列。

+3

或...您可以在單個單元格上使用'= rand()',然後雙擊該小點所選單元格的右下角將其應用於整個列。 – 2016-10-11 08:59:35

7

我通常按照您的描述來做:
添加一個帶有隨機值的單獨列(=RAND()),然後對該列執行排序。

可能是更復雜和更漂亮的方式(使用宏等),但這對我來說足夠快,夠簡單。

1

這裏有一個宏,可以讓你選擇的洗牌中的單元格列:

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 

您可以閱讀評論,看看宏做。以下是如何安裝宏:

  1. 打開VBA編輯器(Alt + F11)。
  2. 右鍵單擊當前打開的電子表格(在「VBAProject」之後的括號中列出)下的「ThisWorkbook」,然後選擇插入/模塊。
  3. 粘貼上面的代碼並保存電子表格。

現在,您可以將「ShuffleSelectedCells」宏指定給圖標或熱鍵,以快速隨機化所選行(請注意,您只能選擇一列行)。