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

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

  関連記事

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

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

Chr 関数 例
文字列:指定した文字コードに対応する文字を返す(Chr 関数)

Chr 関数の使い方 【書式】 result = Chr ( code ) 引数 …

フォントの設定(Font プロパティ)

フォントの設定(Font プロパティ) 指定されたオブジェクトのフォント情報(F …

InStrRev 関数
文字列:文字列を最後から検索してその最初の文字位置を返す(InStrRev 関数)

InStrRev 関数 任意の文字列の中で、指定した文字列を最後から検索して、見 …

配列(多次元配列・配列の次元の変更)

多次元配列 【書式】 多次元配列の宣言 <静的配列(固定長配列)> Dim my …

Randomize 関数 例1
乱数ジェネレータを初期化 (乱数系列を再設定) する(Randomize ステートメント)

Randomize ステートメントの使い方 Rnd 関数 を使用する前に使用しま …

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

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

文字列:指定した数の空白(スペース)からなる文字列を返す(Space 関数)

Space 関数 【書式】 result = Space ( number ) …

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

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

文字列:文字列を指定した形式に変換する(StrConv 関数)

StrConv 関数の使い方 【書式】 result = StrConv ( s …