ExcelWork.info

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

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 オブジェクト(背景色・アイコンの並べ替え)使用例

サンプルVBAソース


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

サンプルVBAソース実行前

実行後



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

サンプルVBAソース


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

実行後