ous">

小さな在庫管理

在庫管理導入からシステム作成まで詳細解説!

VBA 並べ替え処理 Sort メソッド、Sort オブジェクトについて詳細解説! [VBA関連解説#16]

この記事では、VBAでの並べ替え処理に使用する、Sortメソッド、Sortオブジェクトの使用方法を解説します。

基本構文から、引数の設定方法などの記述方法を解説します。


VBA関連解説

Excelの並べ替え機能

エクセルで並べ替えするときは、並べ替え機能を使用する方法とオートフィルターの並べ替え機能を使用する方法があります。

Sortメソッドは、Excelの並べ替え機能を再現したものともいえます。
Excelの並べ替え機能はデータタブの並べ替えとフィルターにある、並び替えボタンで始めます。

並べ替えボタンをクリックすると、並べ替えのダイアログボックスが表示されます。

VBAでは、並べ替え機能が、Sortメソッドで再現できます。
 

Excelのオートフィルターはデータタブの並べ替えとフィルターにある、フィルターボタンで設定できます。

フィルターボタンをクリックすると、リストのヘッダー部に矢印ボタンが表示されます。

矢印ボタンをクリックすると、オートフィルター機能が使用できます。

VBAでは、これらのオートフィルター機能のうち並べ替えに関する機能が、Sortオブジェクトで再現できます。

 

Sort メソッドの構文

VBAでは、セルの並べ替えにSortメソッドがよく使用されます。

基本構文

Sortメソッドは、セル範囲内の指定列を並べ替えします。

Sort 構文

Range("A1").Sort Key1, Order1, Key2, Order2, Key3, Order3, Header, MatchCase, Orientation, SortMethod

引数の設定は下表のようになります。

Sort 引数

Sortメソッド引数設定

 

使用方法

使用方法については、下記サンプルを実際に処理した結果とともに解説します。

並べ替えサンプル

Sort 例

Sub Sort_METHOD()

Range("A1").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes

End Sub

並べ替え結果

上記コードは、Sortメソッドを使用して並べ替えをする、最もシンプルな例です。

Sort オブジェクトの構文

Excel2007以降では、セルの並べ替えにSortオブジェクトを使用できるようになりました。

基本構文

Sortオブジェクトは、セル範囲内の指定列を並べ替えします。

Sort 構文

With Sheets(1).Sort
    .SortFields.Clear
    .SortFields.Add Key, SortOn, Order, DataOption

    .SetRange
    .Header
    .MatchCase
    .Orientation
    .SortMethod
    .Apply
End With

構文は、前半のSortFieldsオブジェクトのAddメソッドで並べ替えの条件を設定し、後半にSortオブジェクトのプロパティで並べ替えの挙動を設定します。

引数の設定は下表のようになります。

SortFields.Add 引数

SortFields.Addメソッド引数設定

Sort プロパティ

Sortプロパティ引数設定

 

使用方法

Sort 例

Sub Sort_OBJECT()
    
With Sheets(1).Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    .SetRange Range("A1:B7")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

End Sub

上記コードは、Sortプロパティを使用して並べ替えをする、最もシンプルな例です。

 

コードの可読性

Excel2007以降では、セルの並べ替えにSortオブジェクトを使用できるようになりました。
Sortメソッドとの違いは、指定できるキーが3個から64個に増えたことと、色やアイコンでの並べ替えができるようになったことです。
ただし、コードが長くなり、可読性が悪くなっていますので、単純に並べ替えるだけであれば、Sortメソッドを使用するのがいいでしょう。

また、複数のキーを指定すると、これもコードが長くなり、可読性が悪くなっていますので、下記のように記述すると、設定できるキーの個数も気にせず可読性も良くなります。

Sub Sort_複数キー()

Range("A1").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
Range("A1").Sort Key1:=Range("C1"), Order1:=xlDescending, Header:=xlYes
Range("A1").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes

End Sub

 

検索・抽出・並び替え

VBAでExcelシートをデータベース的に使用するときには、検索・抽出・並び替えの各機能の使用が必要となってきます。
この記事では、並び替え機能に使用する Sort メソッド・Sort オブジェクトについて解説しました。

下記の記事では、Find メソッドを使用した検索機能について解説しています。

下記の記事では、AutoFilter メソッドを使用した抽出機能について解説しています。


 

概要解説に戻る