Excel のシート上のデータを VBA でソート(並び替え)させてみます。ここでは、Range.Sort メソッドを使用して並び替えを行っていますが、非常に簡単で強力です。
また、ソートと言えばバブルソートやクイックソートなど様々なアルゴリズムがあります。エクセルではどのアルゴリズムを採用しているのか分かりませんが、個人的には気になります。やはり、独自のアルゴリズムでしょうか。ご存知の方いらっしゃいますでしょうか?
スポンサーリンク
ソート用のサンプルデータ
ここでは、以下のデータを使用してソートを行います。

サンプルデータ
ソートするサンプルスクリプト
次にエクセルシート上のデータのソートを行うサンプルスクリプトになります。たった1行のスクリプトで簡単にソート処理を行えることがわかります。
'
' コードで昇順に並び替え
'
Private Sub SortByCode_Click()
' コードで昇順にソートする
Range("B2:D12").Sort Key1:=Range("B2"), _
Order1:=xlAscending, _
Header:=xlGuess
End Sub
'
' 量(g)で降順に並び替え
'
Private Sub SortByWeight_Click()
' 量で降順にソートする
Range("B2:D12").Sort Key1:=Range("D2"), _
Order1:=xlDescending, _
Header:=xlGuess
End Sub
コードで昇順に並び替えた結果

量で降順に並び替えた結果

並び替えに複数の条件を指定する
Range.Sort メソッドを使用する大きな利点でもあると思いますが、ソート条件を複数指定することが容易です。
' ソートする条件を複数指定する
Range("B2:D12").Sort Key1:=Range("D2"), _
Order1:=xlDescending, _
Key2:=Range("B2"), _
Order2:=xlDescending, _
Header:=xlGuess
参考
- MSDN – Range.Sort Method (Excel)
最近の反省
最近、顔がアンパンマンだとか、ジャムオジサンに新しい顔焼いてもらえだとか調子にのって言って怒らせてしまった人がいます。
機嫌直して~来いよ来いよ~おいら~の家まで~(そういう仲ではありませんけれど)。ごめんねーごめんねー。相手も真剣に怒っているわけではなのですが、こんな本渡したらまた更に怒られそうです。