教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA プログラミング】(並べ替え7)昇順・降順混在並べ替え

       f:id:m_kbou:20200421124925p:plain

指定したセル範囲の並べ替えする方法について説明します。今回は昇順及び降順の並べ替えが混在する方法について説明します。

 

【目次】

 

例題

例題は、<実行>ボタンにVBAマクロが登録されており、ボタンをクリックする事で並べ替えを行います。内容は、A3セル~E21セルの範囲をA列に入力されている種類番号を昇順・C列に入力されている商品番号を降順・E列に入力されている金額を昇順で並べ替えするプログラミング方法となります。並べ替えの優先順位は、種類番号>商品番号>金額とします。

[実行前]:

・A列に種類番号、B列に種類名、C列に商品番号、D列に商品名、E列に金額が入力されている。

f:id:m_kbou:20200318131033p:plain

[実行後]:

・A3セル~E21セルの範囲がA列の種類番号で昇順>C列の商品番号順で降順>E列の金額で昇順に並べ替えされる。

f:id:m_kbou:20200318131041p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。また、ボタンにプログラム内容を割り当てるには、VBAをボタンに割り当てるを参考にして下さい。

-------------------------------------------------

Sub サンプル()
   
    Range("A3:E21").Sort Key1:=Range("A3"), Order1:=xlAscending, _
                         Key2:=Range("C3"), Order2:=xlDescending, _
                         Key3:=Range("E3"), Order3:=xlAscending

End Sub

-------------------------------------------------

今回の例題では、A3セル~E21セル範囲の並べ替えを行うため、範囲の指定にRange("A3:E21")と記述します。

並べ替えの第1条件としてA列で並べ替えを行うため、ソートキーにはKey1:=Range("A3")と記述します。また、並べ替えの第2条件としてC列で並べ替えを行うため、ソートキーにはKey2:=Range("C3")と記述します。また、並べ替えの第3条件としてE列で並べ替えを行うため、ソートキーにはKey3:=Range("E3")と記述します。

更にA列は昇順で並べ替えをするためOrder1:=xlAscending、C列は降順で並べ替えをするためOrder2:=xlDescending、E列は昇順で並べ替えするためOrder3:=xlAscendingと各々記述します。

処理内容を説明すると、

「A3セル~E21セルの範囲をA列を第1キー・C列を第2キー・E列を第3キーとして、A列は昇順・C列は降順・E列は昇順に並べ替えします。」

との意味になります。

 

ダウンロード

上記サンプルプログラムを使用したい場合は、こちらからダウンロードして下さい。

1drv.ms