55

如何随机化 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() 用随机数填充它并根据该列进行排序。

但这是最好的方法吗?兰德方程将提供多达一百万个随机数,我有一百万行的四分之一,所以它似乎可以工作。

谢谢

我搜索了一下,虽然这个关于随机化列的答案很接近,但似乎有点矫枉过正。

4

4 回答 4

64

也许充满随机数的整列并不是最好的方法,但它似乎可能是@mariusnn 提到的最实用的方法。

在那张纸条上,这让我在使用 Office 2010 时感到一阵难过,虽然通常的答案类似于 lifehacker工作中的答案,但我只是想分享一个额外的步骤,以使数字独一无二:

  1. 在要随机化的列表旁边创建一个新列
  2. =rand()新列的第一个单元格中输入 - 这将生成一个介于 0 和 1 之间的随机数
  3. 用该公式填充该列。最简单的方法可能是:

    • 沿着新列向下直到要随机化的最后一个单元格
    • 按住 Shift 并单击最后一个单元格
    • 按 Ctrl+D
  4. 现在你应该有一列相同的数字,即使它们都是随机生成的。

    随机数……是一样的……

    这里的诀窍是重新计算它们!转到公式选项卡,然后单击立即计算(或按 F9)。

    实际上是随机数!

    现在,该列中的所有数字实际上都是随机生成的。

  5. 转到主页选项卡,然后单击排序和筛选。选择您想要的任何顺序(从最小到最大从最大到最小) - 无论哪一个都会给您一个相对于原始订单的随机顺序。然后在排序警告提示您展开选择时单击确定。

  6. 您的列表现在应该是随机的!如果需要,您可以摆脱随机数列。

于 2013-04-03T14:55:08.537 回答
11

我通常按​​照您的描述进行操作:
添加一个带有随机值 ( =RAND()) 的单独列,然后对该列执行排序。

可能是更复杂和更漂亮的方式(使用宏等),但这对我来说足够快和简单。

于 2012-07-13T20:05:46.137 回答
2

这是一个宏,可让您随机播放列中选定的单元格:

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. 右键单击当前打开的电子表格下的“ThisWorkbook”(在“VBAProject”之后的括号中列出),然后选择“插入/模块”。
  3. 粘贴上面的代码并保存电子表格。

现在您可以将“ShuffleSelectedCells”宏分配给图标或热键以快速随机化您选择的行(请记住,您只能选择一列行)。

于 2016-03-09T16:58:22.143 回答
0

使用 Excel Online (Google Sheets).. 并为 Google Sheets 安装Power Tools .. 然后在 Google Sheets 中转到 Addons 选项卡并启动Power Tools。然后Randomize从 Power Tools 菜单中选择。选择Shuffle。然后在 Excel 表中选择您的测试选项。然后从 Power Tools 菜单中选择Cells in each row并单击。Shuffle这将相互独立地洗牌每一行的选定单元格。

于 2021-01-09T19:13:08.927 回答