VBA 並べ替え

Excel 2007からは、新しくSortオブジェクトが新設された。
以前は、並べ替えのキーが3つまでしか指定できなかったが、最大64個の指定ができるようになった。
でも、以前のRange.Sortメソッドも使える。

sub 並べ替えSample()
    Dim ws As Worksheet
    Set ws = Worksheets("データ")
    With ws.Sort.SortFields
        .Clear ’(1) 前回のソート情報をクリア
        .Add Key:=Range("C2"), Order:=xlAscending '(2)並べ替えのキーを追加
        .Add Key:=Range("H2"), Order:=xlAscending
        .Add Key:=Range("G2"), Order:=xlAscending
        .Add Key:=Range("D2"), Order:=xlAscending
    End With
    With ws.Sort '対象となるWorkSheetオブジェクトを指定
        .SetRange Range("A1:I1000") '(3) 並べ替えの範囲を指定
        .Header = xlYes '(4) 行ヘッダーの有無を指定
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply '(5) 並べ替え実行
    End With
End Sub

Sort オブジェクト

メソッド

Apply現在適用されている並べ替え状態に基づいて範囲を並べ替え
SetRange並べ替えが行われる範囲を設定

プロパティ

Application・オブジェクト修飾子なしの場合、Excelアプリケーションを表すApplicationオブジェクトを返す
・オブジェクト修飾子を指定した場合、指定したオブジェクトを作成したApplicationオブジェクトを取得
・値の取得のみ
Creator・指定されたオブジェクトを作成したアプリケーションを32 ビットの整数値で返す
・取得のみ可能なLong値
Header最初の行にヘッダー情報が含まれるかどうかを指定
xlGuesss:0
見出しがあるかどうか、ある場合はその場所を Excel が特定
xlNo:2
既定値。 範囲全体が並べ替えの対象
xlYes:1
範囲全体が並べ替えられない
MatchCaseTrue :大文字と小文字を区別
False :大文字と小文字を区別しない
値の取得と設定が可能
Orientation並べ替え方向を指定
xlSortColumns :1
列単位で並べ替える
xlSortRows :2
行単位で並べ替える(既定値)
Parent・指定されたオブジェクトの親オブジェクトを返す
・ 読み取り専用
Rng・並べ替えが行われる値の範囲を返す
・ 値の取得のみ
SortFields・Sortオブジェクトに関連付けられている並べ替えフィールドのコレクションを表すSortFieldsオブジェクトを返す
・ 読み取り専用
SortMethod・漢字の並べ替え方法を指定
xlPinYin: 1
ふりがなを使用(既定値)
xlStroke: 2
ふりがなを使用しない

SortFields オブジェクト

メソッド

Add新しい並べ替えフィールドを作成し、SortFieldsオブジェクトを返す
SortFields.Add ( key [, sorton, order, customorder, dataoption ] )

sorton:並べ替えの対象を指定
xlSortOnCellColor:1:セルの色
xlSortOnFontColor:2:フォントの色
xlSortOnIcon:3:アイコン
xlSortOnValues:0:値

order:並び替え順序
xlAscending:1: 昇順で並べ替え(既定値)
xlDescending:2 :降順で並べ替え

customorder:ユーザー設定の並べ替え順序
カンマ区切りの文字列(Variant)で指定

dataoption:テキストを並べ替える方法を指定
xlSortNormal :0: 数値とテキストを別々に並べ替え(既定値)
xlSortTextAsNumbers: 1: テキストを数値データとして並べ替え
Add2新しい並べ替えフィールドを作成し、必要に応じてSubFieldを定義してデータ型を並べ替えることができるSortFieldsオブジェクトを返す
ClearSortFieldsオブジェクトをクリア
並べ替えのキー設定を全てクリア

プロパティ

Application・オブジェクト修飾子なしの場合、Excel アプリケーションを表すApplicationオブジェクトを返す
・オブジェクト修飾子を指定した場合、指定したオブジェクトを作成したApplicationオブジェクトを取得
・ 値の取得のみ
Count・コレクション内にあるオブジェクトの数を返す
・取得のみ可能なLong値
Creator・指定されたオブジェクトを作成したアプリケーションを32 ビットの整数値で返す
・ 取得のみ可能なLong値
Item・ブックで 並べ替えることができる項目のコレクションを表すSortFieldオブジェクトを返す
・ 読み取り専用
Parent・指定されたオブジェクトの親オブジェクトを返す
・読み取り専用

コメント