指定範囲のセルを昇順-降順に並び替え(ソート)するマクロ
を示す。
■LibreOffice-VBA セルの並び替え-ソート 昇順-降順-範囲指定マクロ
Option VBASupport 1 Sub sample13() Dim MR As Long Dim MC As Long MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列 Range(Cells(1, 1), Cells(MR, MC)).Sort _ Key1:=Cells(1, 7), Order1:=xlDescending, _ Key2:=Cells(1, 8), Order2:=xlAscending, _ Key3:=Cells(1, 5), Order3:=xlDescending, _ Header:=xlYes End Sub※[1.] LibreOffice BasicでVBA使用に必要。
※[4.~7.] セル指定範囲取得。■過去記事■
※[9.] ソート範囲指定。
※[10.] 優先順位1。7列目(G列)を降順にする。
※[11.] 優先順位2。8列目(H列)を昇順にする。
※[12.] 優先順位3。5列目(E列)を降順にする。
※[13.] 先頭行をタイトル行とする(ソートしない)。
■マクロ実行対象
「部品データ_191108.ods」の「部品表」シート。■マクロ実行結果
■「Key1:=Cells(1, 7), Order1:=xlDescending」
優先順位1、7列目(G列)。降順(903⇒901)に
並べ替え確認できる。
■「Key2:=Cells(1, 8), Order2:=xlAscending」
優先順位2、8列目(H列)。
G列903の範囲で昇順(1⇒480)に
G列903の範囲で昇順(1⇒480)に
並べ替え確認できる。G列902、901も同様。
■「Key3:=Cells(1, 5), Order3:=xlDescending」
優先順位3、5列目(E列)。
H列1の範囲で降順(K3050-0218⇒K2005-4021)に
H列1の範囲で降順(K3050-0218⇒K2005-4021)に
並べ替え確認できる。他も同様。
■補足-エクセルVBA-セルの並び替え-ソート 昇順-降順-範囲指定マクロ
Sub sample13e() Dim MR As Long Dim MC As Long MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列 Range(Cells(1, 1), Cells(MR, MC)).Sort _ Key1:=Cells(1, 7), Order1:=xlDescending, _ Key2:=Cells(1, 8), Order2:=xlAscending, _ Key3:=Cells(1, 5), Order3:=xlDescending, _ Header:=xlYes End Sub※「Option VBASupport 1」なし。他はLibreOfficeと同じ。
■あとがき
エクセルVBAの「指定範囲のセルを昇順-降順に並び替え(ソート)するマクロ」
LibreOffice Basicでも使用できることを確認した。
ソートオプションほかに
・「Header:=xlNo」先頭行をタイトル行としない(ソートする)。
・「Header:=xlGuess」タイトル行自動判別。
・「MatchCase:=TRUE」大文字小文字区別する。
・「MatchCase:=FALSE」大文字小文字区別しない。
とかあるけど使ったことありませんわ。
重要でない知識は必要なタイミングで
調べて知れる能力があればよい派。
以上。