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()を使用して新しい列を作成し、乱数を入力して、その列に基づいて並べ替えることができます。

しかし、これはそれを行うための最良の方法ですか?RAND方程式は、最大100万個の乱数を提供し、25万行あるので、うまくいくようです。

ありがとう

私は少し検索しましたが、列のランダム化に関するこの回答は近いですが、やり過ぎのようです。

4

4 に答える 4

64

おそらく、乱数でいっぱいの列全体がそれを行うための最良の方法ではありませんが、@ mariusnnが述べたように、おそらく最も実用的なようです。

その点で、これはOffice 2010でしばらくの間私を踏みにじりました、そして一般的にライフハッカーの仕事のように答えますが、私は数字が一意であるために必要な追加のステップを共有したかっただけです:

  1. ランダム化するリストの横に新しい列を作成します
  2. 新しい列の最初のセルに入力し=rand()ます-これにより、0から1までの乱数が生成されます
  3. その数式を列に入力します。これを行う最も簡単な方法は次のとおりです。

    • ランダム化する最後のセルまで、新しい列に沿って下に移動します
    • Shiftキーを押しながら、最後のセルをクリックします
    • Ctrl+Dを押します
  4. これで、すべてランダムに生成されたとしても、同じ番号の列が作成されます。

    乱数...同じです...

    ここでの秘訣は、それらを再計算することです![数式]タブに移動し、 [今すぐ計算]をクリックします(またはF9キーを押します)。

    実は乱数!

    これで、列のすべての数値が実際にランダムに生成されます。

  5. [ホーム]タブに移動し、 [並べ替えとフィルター]をクリックします。必要な順序(最小から最大または最大から最小)を選択します-元の順序に対してランダムな順序を与える方。次に、並べ替えの警告で選択範囲を展開するように求められたら、[OK]をクリックします。

  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. 現在開いているスプレッドシート(​​「VBAProject」の後に括弧で囲まれています)の下にある「ThisWorkbook」を右クリックし、「Insert/Module」を選択します。
  3. 上記のコードを貼り付けて、スプレッドシートを保存します。

これで、「ShuffleSelectedCells」マクロをアイコンまたはホットキーに割り当てて、選択した行をすばやくランダム化できます(行の選択できる列は1つだけであることに注意してください)。

于 2016-03-09T16:58:22.143 に答える
0

Excel Online(Google Sheets)を使用します。次に、 Power Tools for Google Sheetsをインストールします。次に、Google Sheetsで[アドオン]タブに移動し、PowerToolsを起動します。次に、[Randomize動力工具]メニューから選択します。を選択しShuffleます。次に、Excelシートでテストの選択肢を選択します。次に、[動力工具]メニューから選択Cells in each rowしてクリックします。Shuffleこれにより、各行の選択されたセルが互いに独立してシャッフルされます。

于 2021-01-09T19:13:08.927 に答える