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

  関連記事

引数の整数部分を取得する(Fix 関数・Int 関数)

Fix 関数・Int 関数の使い方 【書式】 number_fix = Fix …

Split 関数(文字列型の一次配列を作成)

Split 関数の使い方 【書式】 myArray = Split ( expr …

Option Compare Text 例
Option Compare ステートメント

Option Compare ステートメントの使い方 【書式】 Option C …

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

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

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

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

固定長形式で分割(TextToColumns メソッド)
セルのデータを固定長形式で複数のセルに分割する(TextToColumns メソッド・Parse メソッド)

固定長形式でセルを分割 TextToColumns メソッドや Parse メソ …

Collection 01a
コレクション(Collection)オブジェクト「連想配列」

コレクション(Collection)オブジェクトの使い方 【書式】 Dim my …

変数がオブジェクト型かどうかをチェックする( IsObject 関数 )

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

インプットボックスを表示する(InputBox関数・InputBoxメソッド)

「InputBox関数」と「InputBoxメソッド」の違い 「InputBox …

Spc 関数 01
指定した数のスペースを挿入する(Spc 関数)

指定した数のスペースを挿入 指定した数のスペースを挿入するには、Spc 関数を使 …