Sub QuickSort()
Dim i As Long, j As Long, msg As String
Dim swap As Long, Numbers(1000) As Long
For i = 1 To 1000 ''ランダムな数字が格納された配列を生成する
Numbers(i) = Int(Rnd * 900) + 100
Next i
msg = msg & "【Before Sort】" & vbCrLf ''ソート前の結果(先頭から10件)を取得する
For i = 1 To 10
msg = msg & Numbers(i) & vbCrLf
Next i
For i = 1 To 1000 ''ソート開始
For j = 1000 To i Step -1
If Numbers(i) > Numbers(j) Then
swap = Numbers(i)
Numbers(i) = Numbers(j)
Numbers(j) = swap
End If
Next j
Next i
msg = msg & "【After Sort】" & vbCrLf ''ソート後の結果(先頭から10件)を取得する
For i = 1 To 10
msg = msg & Numbers(i) & vbCrLf
Next i
MsgBox msg ''結果を表示する
End Sub
Sub ExcelSort()
Dim i As Long, msg As String, Numbers(1000) As Long
For i = 1 To 1000 ''ランダムな数字が格納された配列を生成する
Numbers(i) = Int(Rnd * 900) + 100
Next i
msg = msg & "【Before Sort】" & vbCrLf ''ソート前の結果(先頭から10件)を取得する
For i = 1 To 10
msg = msg & Numbers(i) & vbCrLf
Next i
For i = 1 To 1000 ''配列の要素をシートに書き込む
Cells(i, 1) = Numbers(i)
Next i
''シートをソートする
Range("A1:A1000").Sort Key1:=Range("A1"), _
Order1:=xlAscending, _
Header:=xlGuess
For i = 1 To 1000 ''結果を配列に戻す
Numbers(i) = Cells(i, 1)
Next i
msg = msg & "【After Sort】" & vbCrLf ''ソート後の結果(先頭から10件)を取得する
For i = 1 To 10
msg = msg & Numbers(i) & vbCrLf
Next i
MsgBox msg ''結果を表示する
End Sub