表全体ではなく、特定のデータだけ並べ替えるやり方を解説します。なお、ここではマクロによる方法を解説しますが、手動操作のやり方は、下記ページをご覧ください。
ここでは、次のようなデータで解説します。
A列が"田中"である行だけ、C列の「数値」で並べ替えます。A列が"田中"ではない行は並べ替えません。これ、手動でやるなら、A列を"田中"で絞り込んで、C列を並べ替えればいいんです。それをVBAでやります。
Sub Sample() Range("A1").AutoFilter 1, "田中" Range("A1").CurrentRegion.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes Range("A1").AutoFilter End Sub
Range("A1")が何度も出てきてイヤですね。オブジェクト型変数か、Withを使ってメンテナンス性を高めましょう。
Sub Sample() With Range("A1") .AutoFilter 1, "田中" .CurrentRegion.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes .AutoFilter End With End Sub
Excel 2007から、並べ替え機能が拡張されて、操作をマクロ記録すると何やら難しいコードが記録されます。ちなみに、その新しい並べ替えの仕組みは、下記のページで詳しく解説していますので、興味のある方はご覧ください。
だけど、今回のように単純な並べ替えだけでしたら、Excel 2003までに使われていたSortメソッドを使った方が、はるかに簡単です。