如何随机化 Excel 行

问题描述 投票:0回答:5

如何在 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 方程将提供最多一百万个随机数,我有一百万行的四分之一,所以看起来它可以工作。

谢谢

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

excel random
5个回答
70
投票

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

在这一点上,这让我对 Office 2010 感到困惑了一段时间,虽然通常的答案是 lifehacker 工作中的答案,但我只是想分享一个使数字唯一所需的额外步骤:

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

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

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

    这里的技巧是重新计算它们!转到 Formulas 选项卡,然后单击 Calculate Now(或按 F9)。

    Actually random numbers!

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

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

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


18
投票

我通常按照你的描述做:
添加具有随机值 (

=RAND()
) 的单独列,然后对该列执行排序。

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


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 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

您可以阅读注释来了解宏在做什么。以下是安装宏的方法:

  1. 打开 VBA 编辑器(Alt + F11)。
  2. 右键单击当前打开的电子表格(在“VBAProject”后面的括号中列出)下的“ThisWorkbook”,然后选择“插入/模块”。
  3. 粘贴上面的代码并保存电子表格。

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


1
投票

使用 Excel Online (Google Sheets).. 并为 Google Sheets 安装 Power Tools.. 然后在 Google Sheets 中转到 Addons 选项卡并start Power Tools。然后从“电源工具”菜单中选择

Randomize
。选择
Shuffle
。然后在 Excel 表中选择您的测试选项。然后选择
Cells in each row
并从“电源工具”菜单中单击
Shuffle
。这将相互独立地对每一行选定的单元格进行洗牌。


1
投票

例如,这是我们的数据集。

enter image description here

然后输入此公式并将其添加到 B1 至 B9 单元格。

enter image description here

enter image description here

现在您可以转到数据选项卡,然后根据需要选择排序从最小到最大或排序l从最大到最小

enter image description here

***然后会弹出一个对话框,勾选展开选择选项。然后单击排序

enter image description here

数据范围已按行随机打乱。然后您可以删除公式单元格。(B列)

© www.soinside.com 2019 - 2024. All rights reserved.