【问题标题】:How to randomize Excel rows如何随机化 Excel 行
【发布时间】:2012-07-13 20:01:06
【问题描述】:

如何在 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 方程最多可以提供a million random numbers,我有一百万行的四分之一,所以它似乎可以工作。

谢谢

我搜索了一下,虽然 this answer about randomizing columns 很接近,但似乎有点矫枉过正。

【问题讨论】:

  • 这是一个非常简单的方法,如果不需要,无需复杂化。
  • 我通常添加一个带有随机值 (=RAND()) 的单独列,然后对该列执行排序。不确定这是最好还是最快的方法,但肯定能胜任。
  • RAND 对大约一百万个数字的限制仅适用于早期版本的 Excel。自 Excel 2003 以来,此问题已得到解决。见this microsoft link

标签: excel random


【解决方案1】:

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

关于这一点,这让我在使用 Office 2010 时感到一阵难过,虽然通常回答像 the one in lifehacker 工作,但我只是想分享一个额外的步骤,以使数字唯一:

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

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

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

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

  5. 转到主页标签并点击排序和过滤。选择您想要的任何顺序(从小到大从大到小) - 无论哪个顺序都会给您一个相对于原始顺序的随机顺序。然后在排序警告提示您展开选择时单击“确定”。

  6. 您的列表现在应该是随机的!如果你愿意,你可以去掉随机数列。

【讨论】:

  • 或者...您可以在单个单元格上使用=rand(),然后双击所选单元格右下角的小点以将其应用于整个列。
【解决方案2】:

我通常按照你的描述做:
添加具有随机值 (=RAND()) 的单独列,然后对该列执行排序。

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

【讨论】:

    【解决方案3】:

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

    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
    

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 2011-01-27
        • 2011-06-23
        相关资源
        最近更新 更多