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つ目は、一部降順なのですがややこしいので決まった順番で指定しようかと。

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

    ご教示願います。

ゆうこ へ返信する コメントをキャンセル

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

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

  関連記事

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

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

現在選択されているセルを参照(RangeSelection プロパティ)

RangeSelection プロパティ 実際に何が選択されているかにかかわらず …

列名・列番号取得 使用例
列名を取得、列番号を取得(Address プロパティ,Column プロパティ)

列番号を取得する セル番地(「A1」や「B3」)や列名(「A」「B」「C」&#8 …

VBA で、ワークシート関数を使用(WorksheetFunction プロパティ)

VBA で、ワークシと関数を使用 VBA から、ワークシート関数を呼び出す場合、 …

オートフィルタ(色で抽出する)AutoFilter メソッド

オートフィルタ(色で抽出する) フォントの色、セルの背景色(条件付き書式による設 …

A1 形式と R1C1 形式を変換、相対参照と絶対参照を変換(ConvertFormula)

ConvertFormula メソッド 数式で参照しているアドレスの相対参照と絶 …

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

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

入力規則(エラーメッセージの設定)Validation オブジェクト

無効値を入力時に、エラーメッセージの表示 Validation.ShowErro …

Validation プロパティ 使用例3
入力規則(入力時メッセージの設定)Validation オブジェクト

入力規則の入力時メッセージを表示する Validation.ShowInput …

セルに値を設定する・セルの値を参照する(Value プロパティ)

Value プロパティ Value プロパティは、セルの値を取得したり、値を設定 …