ExcelWork.info

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

ユーザー設定リストを使って並べ替える(Sort)

   

VBAでリスト、テーブルを並べ替える(Sort)

VBAで、ソートを行うには、Sort メソッド(Excel 2003 以降)や Sort オブジェクト(Excel 2007 以降)を使用します。
組み込みのユーザー設定リストや独自に作成したユーザー設定リストを使ってソートを実行するには、Sort メソッド の場合は、引数 ordercustom に「ユーザー設定リスト」のダイアログボックスの上からの順番を数値で指定します。Sort オブジェクト の場合は、SortFields.Add メソッド で、引数 customorder に、ユーザー定義の並べ替えの順番をカンマ区切りの文字列で指定するか、「ユーザー設定リスト」のダイアログボックスの上からの順番を数値で指定します。

Sort メソッド の引数 ordercustom には、直接文字列を指定して、並べ替えの基準を設定することはできません。まず、ユーザー設定リストに登録する必要があります。

Sort メソッド に関しての詳細は 並べ替え(Sort メソッド)Sort オブジェクト に関しての詳細は 並べ替え(Sort オブジェクト, SortFields コレクション) を参照してください。


Sort メソッド(Excel 2003 以降)


【書式】

<「ユーザー設定リスト」を使用して並べ替え>
object1.Sort ([ key1, order1, header, ordercustom, matchcase, orientation, sortmethod, dataoption1 ] )

<「ユーザー設定リスト」に登録>
object2.AddCustomList( listarray )


引数・戻り値

  • object1  ・・・  対象となる Range オブジェクトを指定します。
  • key1  ・・・  並べ替えキーのフィールドを Range オブジェクト(セル)、または文字列で指定します。
  • order1  ・・・  key1 で指定した値の並び替え順序を XlSortOrder 列挙型 で指定します。
    xlAscending … 昇順で並べ替え(既定値)
    xlDescending … 降順で並べ替え
  • header  ・・・  先頭行を見出しとして使用するかどうかを指定します。
    xlGuess … Excel が自動的に設定
    xlYes … 見出しとして使用
    xlNo … 見出しとして使用しない(既定値)
  • ordercustom  ・・・  ユーザー設定の並べ替え順のリスト内の番号を示す、1 から始まる整数を指定します。
  • orientation  ・・・  並べ替えの方向を XlSortOrientation 列挙型 で指定。
    xlSortColumns … 行単位で並べ替え(上から下)既定値
    xlSortRows … 列単位で並べ替え(左から右)
  • sortmethod  ・・・  並べ替えの方法を XlSortMethod 列挙型 で指定します。
    xlPinYin … ふりがなを使って並べ替え(既定値)
    xlStroke … ふりがなを使わずに並べ替え
  • DataOption1  ・・・  Key1 で指定した範囲でテキストを並べ替える方法を指定します。
    xlSortNormal … 数値とテキストを別々に並べ替え(既定値)
    xlSortTextAsNumbers … テキストを数値データとして並べ替え
  • object2  ・・・  対象となる Application オブジェクトを指定します。
  • listarray  ・・・  ユーザー設定リストに登録する文字列の配列を指定します。
    (例)
    Application.AddCustomList ListArray:= Array(“日”,”月”,”火”,”水”,”木”,”金”,”土”)



ユーザー設定リストを使って並べ替え(Sort メソッド)使用例

サンプルVBAソース1


実行結果

現在のユーザー設定リスト

ユーザー設定リスト

サンプルVBAソース1 実行前

Sort メソッド(ユーザー設定リスト)1

サンプルVBAソース1 実行後

Sort メソッド(ユーザー設定リスト)2



Sort オブジェクト(Excel 2007 以降)


【書式】

<SortFields.Add メソッド>
object.SortFields( key [, sorton, order, customorder, dataoption ] )


引数・戻り値

  • object  ・・・  対象となる Sort オブジェクトを指定します。
  • key  ・・・  並べ替えのキー値をセル範囲(Range 型)で、 指定します。
  • sorton  ・・・  並べ替えの対象を指定します。
    xlSortOnCellColor … セルの色
    xlSortOnFontColor … フォントの色
    xlSortOnIcon … アイコン
    xlSortOnValues … 値
  • order  ・・・  並び替え順序を XlSortOrder 列挙型 で指定します。
    xlAscending … 昇順で並べ替え(既定値)
    xlDescending … 降順で並べ替え
  • customorder  ・・・  
    ユーザー定義の並べ替えの順番をカンマ区切りの文字列(Variant)で指定するか、「ユーザー設定リスト」のダイアログボックスの上からの順番を数値で指定します。
  • dataoption  ・・・  テキストを並べ替える方法を指定します。
    xlSortNormal … 数値とテキストを別々に並べ替え(既定値)
    xlSortTextAsNumbers … テキストを数値データとして並べ替え



ユーザー設定リストを使って並べ替え(Sort オブジェクト)使用例

サンプルVBAソース2


実行結果

サンプルVBAソース2 実行前

Sort オブジェクト(ユーザー設定リスト)1

サンプルVBAソース2 実行後

Sort オブジェクト(ユーザー設定リスト)2


 - VBA基本 , , , ,

Message

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

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

  関連記事

ADO Stream オブジェクト テキスト(UTF-8)読み込み
テキストファイル(UTF-8)を読み込み、書き出し(ADODB.Stream)

Stream オブジェクト ADO(ActiveX Database Objec …

文字列:文字列の長さを取得( Len 関数、LenB 関数 )

Len 関数(文字列の長さを取得) 【書式】 result_len = Len …

IgnoreCase プロパティ
VBA で正規表現を使う(RegExp オブジェクトのプロパティ)

RegExp オブジェクトのプロパティ RegExp オブジェクトの詳細に関して …

Volatile メソッド
ユーザー定義関数:自動再計算関数の設定(Volatile メソッド)

ユーザー定義関数で、自動再計算を行うかどうかを設定する ワークシート上で使用する …

ある数値が、複数の範囲のどの範囲に含まれるかを示す文字列を返す(Partition 関数)

Partition 関数 の使い方 Partition 関数は、ある数値が、区切 …

乱数(Rnd 関数)例1
乱数を生成する(Rnd 関数)

Rnd 関数の使い方 Rnd 関数は、0 以上、1 未満の範囲の乱数を単精度浮動 …

変数が数値型かどうかをチェックする( IsNumeric 関数 )

IsNumeric 関数の使い方 【書式】 result = IsNumeric …

太字・斜体(Bold,Italic,FontStyle)例
フォント 太字・斜体(Bold, Italic, FontStyle プロパティ)

太字の設定(Bold プロパティ) Bold プロパティは、フォントを太字にする …

Array 関数(1)
Array 関数(バリアント型の配列を作成)

Array 関数の使い方 【書式】 myArray = Array ( elem …

ClearContents メソッド 例01
データをクリアする(ClearContents メソッド)

ClearContents メソッド 対象がセル範囲(Range オブジェクト) …