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 オブジェクト 使用例(列単位の並べ替え)


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

Message

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

  関連記事

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

AutoFilter.ShowAllData メソッド AutoFilter.S …

Goto メソッド
指定したセルへ移動(Goto メソッド)

指定したセルへ移動 指定したシートの指定したセルへジャンプするには、Goto メ …

ReferenceStyle プロパティ 例01
A1参照形式、R1C1参照形式の設定・取得(ReferenceStyle プロパティ)

ReferenceStyle プロパティ ReferenceStyle プロパテ …

Validation オブジェクト 使用例5
入力規則(日本語入力)Validation オブジェクト,IMEMode プロパティ

IMEMode プロパティ Validation.IMEMode プロパティ を …

数式を設定・取得する(Formula プロパティ・FormulaR1C1 プロパティ)

Formula プロパティ(FormulaR1C1 プロパティ) Formula …

セルの表示形式を設定・取得する(NumberFormat プロパティ)

NumberFormat プロパティ NumberFormat プロパティは、現 …

ハイパーリンク(Hyperlink オブジェクトのメソッド)

Hyperlink オブジェクトのメソッド Hyperlinks コレクション …

ShrinkToFit プロパティ 例
文字列を縮小して全体を表示(ShrinkToFit プロパティ)

ShrinkToFit プロパティ ShrinkToFit プロパティは、セルに …

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

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

非連続のセルが選択されているか確認する(Areas コレクション)

Areas コレクション の使い方 複数の離れた位置にあるセル範囲を選択した場合 …