ExcelWork.info

Excel(エクセル)のマクロ・VBA・関数・操作などのメモ

並べ替え(Sort オブジェクト, SortFields コレクション)

      2015/08/26

Sort オブジェクトによる並べ替え

Excel 2007 以降のバージョンでのみ使用可能です。(これ以前の Excel では、Sort メソッド を使用します。)
Sort オブジェクト は、Sort メソッド から機能が拡張されています。また、操作方法も変わっています。
まず、並べ替えを行いたい範囲の Sort オブジェクト を取得します。Sort オブジェクトSortFields コレクション を取得し、並べ替えの条件を設定します。そして、Sort オブジェクトApply メソッドで、並べ替えを実行します。


Sort オブジェクト


【書式】

object.Sort

引数・戻り値

  • object  ・・・  対象となる Worksheet オブジェクトを指定します。


Sort オブジェクトのメソッド

  • Sort.Apply
    SortFields コレクション で設定した条件をもとに、並べ替えを実行します。
     
  • Sort.SetRange ( rng )
    並べ替えが行われる範囲を設定します。
    rng:Sort オブジェクトで指定される並べ替えが行われる範囲を指定します(省略不可)。

Sort オブジェクトの主なプロパティ

  • Sort.Header
    先頭行を見出しとして使用するかどうかを指定します。値の取得および設定が可能です。XlYesNoGuess クラス の定数を使用します。

    定数 内容
    xlGuess 0 Excel が自動的に設定
    xlYes 1 見出しとして使用
    xlNo 2 見出しとして使用しない(範囲全体が並べ替えの対象)既定値

  • Sort.MatchCase
    大文字と小文字を区別する場合は、True、しない場合は False を指定します。値の取得および設定が可能です。
     
  • Sort.Orientation
    並べ替えの方向を XlSortOrientation 列挙型 で指定します。値の取得および設定が可能です。

    定数 内容
    xlSortColumns
    または、xlTopToBottom
    1 行単位で並べ替え(上から下)既定値
    xlSortRows
    または、xlLeftToRight
    2 列単位で並べ替え(左から右)

  • Sort.Rng
    並べ替えが行われる値の範囲を返します。値の取得のみ可能です。
     
  • Sort.SortFields
    Sort オブジェクトに関連付けられている並べ替えフィールドのコレクションを表す SortFields オブジェクトを返します。詳細は、SortFields コレクション を参照。
     
  • Sort.SortMethod
    並べ替えの方法を XlSortMethod 列挙型 で指定します。

    定数 内容
    xlPinYin 1 ふりがなを使って並べ替え(既定値)
    xlStroke 2 ふりがなを使わずに並べ替え



SortFields コレクション

SortFields コレクションは、SortField オブジェクト のコレクションです。

【書式】

object.SortFields

引数・戻り値

  • object  ・・・  対象となる Sort オブジェクトを指定します。


SortFields コレクションのメソッド

  • SortFields.Add ( key [, sorton, order, customorder, dataoption ] )
     
    key:並べ替えのキー値をセル範囲(Range 型)で、 指定します。
     
    sorton:並べ替えの対象を指定します。xlSortOn 列挙型

    定数 内容
    xlSortOnCellColor 1 セルの色
    xlSortOnFontColor 2 フォントの色
    xlSortOnIcon 3 アイコン
    xlSortOnValues 0

     
    order:並び替え順序を XlSortOrder 列挙型 で指定します。

    定数 内容
    xlAscending 1 昇順で並べ替え(既定値)
    xlDescending 2 降順で並べ替え

     
    customorder:ユーザー設定の並べ替え順序の使用設定。カンマ区切りの文字列(Variant)で指定します。
     
    dataoption:テキストを並べ替える方法を指定します。XlSortDataOption 列挙型

    定数 内容
    xlSortNormal 0 数値とテキストを別々に並べ替え(既定値)
    xlSortTextAsNumbers 1 テキストを数値データとして並べ替え

     

  • SortFields.Clear
    並べ替えのキー設定を全てクリアします。
     


SortFields コレクションの主なプロパティ

  • SortFields.Count
    コレクションに含まれるオブジェクトの数を返します。値の取得のみ可能です。
     
  • SortFields.Item ( index )
    各キーに関する設定(SortField オブジェクト)を取得します。
     


Sort オブジェクトを使った VBA ソースの書き方

【書式】

Dim myRng As Worksheet
Set myRng = ActiveWorkbook.Worksheets(“Sheet1“)

With myRng.Sort ―――→ 並べ替えを行うワークシートの Sort オブジェクト

    With .SortFields ―――→ SortFields コレクション

      .Clear ―――→ Sortfields コレクション(全ての並べ替えのキー設定)をクリア

 
 
 ここに、優先度の高い順に、並べ替えキー設定を追加していく
 ( キー設定1 ~ 4 を参照)

 

 
    End With
 
 
    .SetRange Range(“B3“).CurrentRegion ―――→ 並べ替えの対象範囲を設定
    .Header = xlYes ―――→ 先頭行を見出しとして使用
    .MatchCase = False ―――→ 大文字小文字の区別をするかを設定
    .Orientation = xlTopToBottom ―――→ 行単位で並べ替えるか列単位で並べ替えるかを設定
    .SortMethod = xlStroke ―――→ ふりがなを使って並べ替えるかどうかを設定
    .Apply

End With


【書式:キー設定1】

<値で並べ替え>

.Add Key:=Range(“A3“), _ 
―――→ キーになるセルを指定
   SortOn:=xlSortOnValues, _ 
―――→ 値で並べ替え
   Order:=xlDescending, _ 
―――→ 昇順・降順
   DataOption:=xlSortNormal
―――→ 並べ替えの方法


【書式:キー設定2】

<セルの背景色で並べ替え>

.Add Key:=Range(“B3“), _ 
―――→ キーになるセル
   SortOn:=xlSortOnCellColor, _ 
―――→ セル背景色で並べ替え
   Order:=xlAscending, _ 
―――→ 昇順・降順
   DataOption:=xlSortNormal
―――→ 並べ替えの方法
.Item(.Count).SortOnValue.Color = rgbRed
 
―――→ セルの色(キー設定3 の書式でも OK )


【書式:キー設定3】

<セルのフォント色で並べ替え>

.Add ( Key:=Range(“C3“), _ 
―――→ キーになるセル
    SortOn:=xlSortOnFontColor, _ 
―――→ セルフォント色で並べ替え
    Order:=xlAscending, _ 
―――→ 昇順・降順
    DataOption:=xlSortNormal ) _ 
―――→ 並べ替えの方法
.SortOnValue.Color = rgbBlue
 
―――→ フォントの色(キー設定2 の書式でも OK )


【書式:キー設定4】

<セルのアイコンで並べ替え>

.Add ( Key:=Range(“D3“), _ 
―――→ キーになるセル
    SortOn:=xlSortOnIcon, _ 
―――→ アイコンで並べ替え
    Order:=xlAscending, _ 
―――→ 昇順・降順
    DataOption:=xlSortNormal ) _ 
―――→ 並べ替えの方法
.SetIcon Icon:= ActiveWorkbook _
.IconSets(1).Item(1)
―――→ アイコンの種類(キー設定2 の書式でも OK )



Sort オブジェクト(値の並べ替え)使用例

サンプルVBAソース


Sort メソッド(値の並べ替え)使用例 実行結果

サンプルVBAソース実行前

Sort オブジェクト 使用例(実行前)

実行後

Sort オブジェクト 使用例(値の並べ替え)



Sort オブジェクト(背景色・アイコンの並べ替え)使用例

サンプルVBAソース


Sort オブジェクト(背景色・アイコンの並べ替え)使用例 実行結果

サンプルVBAソース実行前

Sort オブジェクト 使用例(実行前)b

実行後

Sort オブジェクト 使用例(色アイコンの並べ替え)



Sort オブジェクト(列単位の並べ替え)使用例

サンプルVBAソース


Sort オブジェクト(列単位の並べ替え)使用例 実行結果

Sort オブジェクト 使用例(実行前)c

実行後

Sort オブジェクト 使用例(列単位の並べ替え)


 - セルの操作 , , , , , , ,

Comment

  1. ゆうこ より:

    おはようございます。
    困っているので教えて下さい。

    3つの条件で、並べ替えをしたいです。

    1つ目と2つ目は、決まった順番があるのでその順にしたいです。
    3つ目は、一部降順なのですがややこしいので決まった順番で指定しようかと。

    その場合、ユーザー設定リストに登録するのですがマクロでそれを表現するのかが分かりません。

    ご教示願います。

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

AutoFilter オブジェクト(メソッド・プロパティ)

AutoFilter.ShowAllData メソッド AutoFilter.S …

文字の向きを表す値を取得・設定する(Orientation プロパティ)

Orientation プロパティ Orientation プロパティで、文字列 …

セル・セル範囲をコピーする(Copy メソッド)

Copy メソッド Copy メソッドは、セル範囲をコピーし、指定したセル範囲に …

セル範囲を結合・結合を解除(Merge メソッド・UnMerge メソッド)

Merge メソッド・UnMerge メソッド セルを結合するには、指定したセル …

2つ以上のセル範囲を1つにまとめて参照(Union メソッド)

Union メソッド Union メソッドは、2つ以上のセル範囲を1つにまとめて …

次の検索(FindNext メソッド,FindPrevious メソッド)

FindNext メソッド Find メソッドで開始された検索を継続します。引数 …

入力規則(Validation オブジェクト)

Validation オブジェクト セル範囲に入力できる値を制限するには 入力規 …

ワイルドカードを使って検索(Find メソッド)

Find メソッド 指定したセル範囲内の特定の情報を含むセルを検索します。 【書 …

文字列の一部の書式を変更(Characters プロパティ)

文字列の一部を参照(Characters プロパティ) Characters プ …

セルが選択されているか確認する(TypeName 関数)

セルが選択されているか確認する方法と使用例 TypeName 関数の引数に、Se …