教えて!ExcelVBA!

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

【ExcelVBA プログラミング】(並べ替え5)降順並べ替え(ソートキーが2つの場合)

f:id:m_kbou:20200421124753p:plain

指定したセル範囲の並べ替えする方法について説明します。今回は2つのソートキーで降順に並べ替えをする方法について説明します。

 

 

例題

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

[実行前]:

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

f:id:m_kbou:20200318130618p:plain

[実行後]:

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

f:id:m_kbou:20200318130627p:plain

 

プログラミング

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

[記述例]:

Sub サンプル()
  Range("A3:D15").Sort Key1:=Range("A3"), Order1:=xlDescending, _
             Key2:=Range("C3"), Order2:=xlDescending
End Sub

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

A列とC列で降順に並べ替えを行うため、

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

並べ替えの第1条件として、ソートキーにはKey1:=Range("A3")と記述し、降順で並べ替えするためOrder1:=xlDescendingと記述します。

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

並べ替えの第2条件として、ソートキーにはKey2:=Range("C3")と記述し、降順で並べ替えするためOrder2:=xlDescendingと記述します。 

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

処理内容を説明すると、

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

との意味になります。

f:id:m_kbou:20210427103903p:plain

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

 

ダウンロード

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

drive.google.com

 

関連プログラム

www.osiete-excelvba.work

www.osiete-excelvba.work