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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

DateSerial 関数 TimeSerial 関数 使用例
日付時刻:数値から日付・時刻データを取得( DateSerial 関数、TimeSerial 関数 )

DateSerial 関数(数値を使って日付データを取得) 【書式】 date …

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

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

画面の更新を停止(ScreenUpdating プロパティ)

画面の更新を停止 マクロを実行すると、画面が更新されます。これにより、実行速度が …

式の値に応じて多分岐を行う(Switch 関数)

Switch 関数 の使い方 Switch 関数は、「式・値」を対にして指定して …

Timer 関数 使用例
日付時刻:経過時間を取得( Timer 関数 )

Timer 関数の使い方 【書式】 result = Timer () 【戻り値 …

Tab 関数 01
出力位置、書き込み位置を設定(Tab 関数)

出力位置、書き込み位置を設定 Tab 関数 は、Print メソッド、または P …

指定した文字列を数値に変換する(Val 関数)

Val 関数 の使い方 Val 関数は、指定した文字列に含まれる数字を数値として …

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

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

オブジェクトの書式をクリアする(ClearFormats メソッド)

ClearFormats メソッド 対象となるオブジェクトの書式(スタイル)を初 …

指定した数値を文字列に変換する(Str 関数)

Str 関数 の使い方 Str 関数は、数値・数式を文字列に変換して返す関数です …