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()を使用して乱数を入力し、その列に基づいて並べ替えることができます。
しかし、これが最善の方法ですか?ランドの方程式は最大 100万個の乱数 を提供し、私は25万行を持っているので、うまくいくようです。
ありがとう
私は少し検索しましたが、 列のランダム化に関するこの答え が近い間は、やり過ぎのようです。
おそらく、乱数でいっぱいの列全体がそれを行うのに最適な方法ではありませんが、@ mariusnnが述べたように、おそらく最も実用的であるように思われます。
そのことについて、これはOffice 2010でしばらく私を踏みにじりました、そして一般的に lifehackerの1つ workのような答えですが、数字が一意になるために必要な追加のステップを共有したいだけです:
=Rand()
と入力します-これにより、0から1の間の乱数が生成されます列にその数式を入力します。これを行う最も簡単な方法は次のとおりです。
これで、すべてがランダムに生成されていても、同じ番号の列ができました。
ここでのコツは、それらを再計算することです! Formulasタブに移動し、Calculate Nowをクリックします(または押すF9)。
これで、列のすべての数値が実際にランダムに生成されます。
ホームタブに移動し、並べ替えとフィルターをクリックします。希望する順序を選択します(Smallest to LargestまたはLargest to Smallest) -元の順序に対してランダムな順序を与えるもの。次に、並べ替え警告が選択を展開するのプロンプトを表示したら、OKをクリックします。
あなたのリストは今ランダム化されるべきです!必要に応じて、乱数の列を取り除くことができます。
私は通常あなたが説明するようにします:
ランダムな値(=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 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
コメントを読んで、マクロの動作を確認できます。マクロをインストールする方法は次のとおりです。
これで、「ShuffleSelectedCells」マクロをアイコンまたはホットキーに割り当てて、選択した行をすばやくランダム化できます(行の1列しか選択できないことに注意してください)。