Excelマクロ覚書 ~データ並べ替え編~
図書館で借りてきた某書籍の覚書です。
【並び替える】
並び替えの設定を行うには、Sortオブジェクトを使う
それぞれメソッドもしくはプロパティを指定する。
Sort.設定
※設定(メソッド)
Apply |
:並べ替えを実行する。 |
SetRange | :並べ替えるセルを指定する。 |
※設定(プロパティ)
Header |
:最初の行にヘッダ情報が含まれるかを指定する |
MatchCase |
:True:大文字と小文字を区別する False:大文字と小文字を区別しない |
Orientation |
:並べ替えの方向を指定する。 xlSortRows:行単位 xlSortColumns:列単位 |
Parent | :指定されたオブジェクトの親オブジェクトを返す |
Rng | :並べ替えが行われる値の範囲を返す |
SortFields | :並べ替えフィールドの集合を表すSort Fieldコレクションを取得する |
SortMethod | :日本語の並べ替えの方法を指定する。 |
With Worksheets("sheets1").Sort
.SortFields.Clear 'ワークシート「sheet1」に対して処理を行う'
.SortFields.Add Key:=Range("G3"), _ 'セルG3をキーに、降順で並び替える設定をする'
SortOn:=xlSortOnValues, _
Order:=xlDescending
.SetRange Range("A3:G8") 'セル範囲A3~G8を並び替えの対象にする'
.Header = xlYes '1行目を見出し行とする'
.Apply '並べ替えを実行する'
End With
読みで並び替える場合
With Worksheets("sheets1").Sort
.SortFields.Clear 'ワークシート「sheet1」に対して処理を行う'
.SortFields.Add Key:=Range("A3"), _ 'セルA3をキーに、降順で並び替える設定をする'
SortOn:=xlSortOnValues, _
Order:=xlAscending
.SetRange Range("A3:G8") 'セル範囲A3~G8を並び替えの対象にする'
.Header = xlYes '1行目を見出し行とする'
.Apply '並べ替えを実行する'
End With
複数の項目で並び替える場合
With Worksheets("sheets1").Sort
.SortFields.Clear 'ワークシート「sheet1」に対して処理を行う'
.SortFields.Add Key:=Range("C3"), _ 'セルC3をキーに、降順で並び替える設定をする'
SortOn:=xlSortOnValues
.SortFields.Add Key:=Range("G3"), _ 'セルG3をキーに、降順で並び替える設定をする'
SortOn:=xlSortOnValues, _
Order:=xlDescending
.SetRange Range("A3:G8") 'セル範囲A3~G8を並び替えの対象にする'
.Header = xlYes '1行目を見出し行とする'
.Apply '並べ替えを実行する'
End With
セルの色で並び替える場合
With Worksheets("sheets1").Sort
.SortFields.Clear 'ワークシート「sheet1」に対して処理を行う'
.SortFields.Add Key:=Range("F3"), _ 'セルF3をキーに、降順で並び替える設定をする'
SortOn:=xlSortOnCellColor, _
.SetRange Range("A3:G15"), _ 'セル範囲A3~A15を並べ替えの対象にする'
.Header = xlYes '1行目を見出し行とする'
.Apply '並べ替えを実行する'
End With
【独自のリスト順に並び替える】
並び替えの設定を行うには、Sortオブジェクトを使う
それぞれメソッドもしくはプロパティを指定する。
SortFieldコレクション.Add Key:=並べ替えのキー,
SortOn:=並べ替えの種類,
Order;=並べ替えの順序,
CustomOrder:=ユーザー設定
Application.AddCustomList ListArray:=Range("A19:A22")
With Worksheets("sheets1").Sort
.SortFields.Clear 'ワークシート「sheet1」に対して処理を行う'
.SortFields.Add Key:=Range("G3"), _ 'セルG3をキーに、降順で並び替える設定をする'
SortOn:=xlSortOnValues, _
CustomOrder:=CustomListCount
.SetRange Range("A3:G8") 'セル範囲A3~G8を並び替えの対象にする'
.Header = xlYes '1行目を見出し行とする'
.Apply '並べ替えを実行する'
End With