• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロでセルをランダムに並び替えたい)

マクロでセルをランダムに並び替えたい

このQ&Aのポイント
  • マクロ初心者の方が、Excelのマクロを使用してセルをランダムに並び替える方法について質問されています。Sheet1のB4からB1003には、整数が小さい順番に入力されています。このセルをSheet2のB4からB1003にランダムに並び替え、さらにSheet3のB4からB1003に大きい順に並び替えたいとのことです。現状のマクロでは、セルの並び替えではなく乱数を当てはめるだけとなっており、整数が重複してしまうため、解決方法を求めています。
  • Excelのマクロを使用して、セルをランダムに並び替える方法を知りたいという質問です。Sheet1のB4からB1003には、整数が小さい順に入力されています。このセルをランダムに並び替え、さらにSheet3のB4からB1003に大きい順に並び替えたいとのことです。現在のマクロでは、セルの並び替えではなく乱数を当てはめているため、整数が重複してしまいます。解決方法を教えてください。
  • Excelのマクロを使用して、セルをランダムに並び替える方法について質問があります。Sheet1のB4からB1003には、整数が小さい順に入力されています。このセルをSheet2のB4からB1003にランダムに並び替え、さらにSheet3のB4からB1003に大きい順に並び替えたいのですが、現在のマクロでは乱数を当てはめるだけであり、整数が重複してしまいます。解決方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#215107
noname#215107
回答No.1

こんばんは。 トランプをくる要領で、並び替えを行ってみました。  Private Sub 並び替え()    Dim i As Integer    Dim m As Variant    Dim r As Integer    'Sheet1をSheet2にコピー    For i = 1 To 1000      Worksheets("Sheet2").Cells(i + 3, 2) = Worksheets("Sheet1").Cells(i + 3, 2)    Next i      With Worksheets("Sheet2")      'Sheet2をランダムに並び替え      For i = 1 To 1000        m = .Cells(i + 3, 2)        r = Int(Rnd * 1000) + 1        .Cells(i + 3, 2) = .Cells(r + 3, 2)        .Cells(r + 3, 2) = m      Next i      '降順に並び替えてSheet3へ      For i = 1 To 1000        Worksheets("Sheet3").Cells(1001 - .Cells(i + 3, 2) + 3, 2) = .Cells(i + 3, 2)      Next i    End With  End Sub

mihok127
質問者

お礼

ありがとうございます。 無事に解決いたしました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#215107
noname#215107
回答No.2

No.1です。補足します。 Sheet3への降順の並び替えは、ご質問の条件の時だけに適用できます。1~1000以外のデータも含まれる場合は、バブルソートやクイックソート等の教科書どおりの手法を使ってください。

すると、全ての回答が全文表示されます。

関連するQ&A