如何在 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() 用随机数填充它,并根据该列进行排序。
但这是最好的方法吗? RAND 方程将提供最多一百万个随机数,我有一百万行的四分之一,所以看起来它可以工作。
谢谢
我搜索了一下,虽然这个关于随机化列的答案很接近,但似乎有点矫枉过正。
也许整列充满随机数并不是最好的方法,但正如 @mariusnn 提到的,这似乎是最实用的。
在这一点上,这让我对 Office 2010 感到困惑了一段时间,虽然通常的答案是 lifehacker 工作中的答案,但我只是想分享一个使数字唯一所需的额外步骤:
=rand()
- 这将生成 0 到 1 之间的随机数用该公式填充该列。最简单的方法可能是:
现在您应该有一列相同的数字,即使它们都是随机生成的。
这里的技巧是重新计算它们!转到 Formulas 选项卡,然后单击 Calculate Now(或按 F9)。
现在该列中的所有数字实际上都是随机生成的。
转到主页选项卡,然后单击排序和过滤。选择您想要的顺序(从最小到最大或从最大到最小)-无论哪一个都会为您提供相对于原始顺序的随机顺序。然后,当排序警告提示您展开选择时,单击确定。
您的列表现在应该是随机的!如果需要,您可以删除随机数列。
我通常按照你的描述做:
添加具有随机值 (
=RAND()
) 的单独列,然后对该列执行排序。
可能是更复杂和更漂亮的方法(使用宏等),但这对我来说足够快和简单。
这里有一个宏,允许您随机排列列中选定的单元格:
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 thdoan 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
您可以阅读注释来了解宏在做什么。以下是安装宏的方法:
现在您可以将“ShuffleSelectedCells”宏分配给图标或热键,以快速随机化所选行(请记住,您只能选择一列行)。
使用 Excel Online (Google Sheets).. 并为 Google Sheets 安装 Power Tools.. 然后在 Google Sheets 中转到 Addons 选项卡并start Power Tools。然后从“电源工具”菜单中选择
Randomize
。选择 Shuffle
。然后在 Excel 表中选择您的测试选项。然后选择 Cells in each row
并从“电源工具”菜单中单击 Shuffle
。这将相互独立地对每一行选定的单元格进行洗牌。