如何随机化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
我可以创build一个新的列,并用随机数填充= RAND()并根据该列进行sorting。
但这是做这件事的最好方法吗? 兰德公式将提供多达一百万个随机数 ,我有25万行,所以它似乎是行得通的。
谢谢
我search了一下,而这个关于随机化列的答案是closures的,看起来像是过度杀伤。
也许整列随机数字并不是最好的办法,但似乎可能是@mariusnn提到的最实用的方法。
在这个笔记上,这让我在Office 2010 上留下了一段时间,虽然一般的答案就像lifehacker的工作,但我只是想分享一个额外的步骤,让这些数字是唯一的:
- 在您要随机化的列表旁边创build一个新列
- 在新列的第一个单元格中input
=rand()
– 这将生成一个介于0和1之间的随机数 -
填写该公式的列。 最简单的方法可能是:
- 沿着新列向下走,直到你想要随机化的最后一个单元格
- 按住Shift键并点击最后一个单元格
- 按下Ctrl + D
-
现在你应该有一列相同的数字,尽pipe它们都是随机生成的。
这里的诀窍是重新计算它们! 转到公式选项卡,然后单击立即计算 (或按F9)。
现在列中的所有数字都是实际随机生成的。
-
转到“ 主页”选项卡,然后单击“ sorting和筛选” 。 select你想要的订单( 最小到最大或最小到最小 ) – 无论哪一个都会根据原始订单给你一个随机的订单。 然后单击确定,当sorting警告提示您扩大select 。
-
你的名单现在应该是随机的! 你可以摆脱随机数字的列,如果你想。
我通常按照你的描述来做:
用一个随机值( =RAND()
)添加一个单独的列,然后对该列执行sorting。
可能是更复杂和更漂亮的方式(使用macros等),但是这对我来说足够快速和简单。
这里有一个macros,允许你在列中混洗选定的单元格:
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
你可以阅读这些评论,看看这个macros在做什么。 以下是如何安装macros:
- 打开VBA编辑器(Alt + F11)。
- 右键单击当前打开的电子表格(在“VBAProject”之后的括号中列出)下的“ThisWorkbook”,然后select插入/模块。
- 粘贴上面的代码并保存电子表格。
现在,您可以将“ShuffleSelectedCells”macros指定给图标或热键,以快速随机化所选行(请注意,您只能select一列行)。