特定のデータだけ並べ替える


表全体ではなく、特定のデータだけ並べ替えるやり方を解説します。なお、ここではマクロによる方法を解説しますが、手動操作のやり方は、下記ページをご覧ください。

特定のデータだけ並べ替える

ここでは、次のようなデータで解説します。

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 2007のSortオブジェクト

だけど、今回のように単純な並べ替えだけでしたら、Excel 2003までに使われていたSortメソッドを使った方が、はるかに簡単です。