ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

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