まさ工房

ExcelVBAとAcessDBを利用した業務支援ツールを作成する工房です

【Excelマクロ・VBA】セル範囲内を並べ替え(ソート)するにはどうすればいいの?教えて!

       f:id:m_kbou:20190528082836p:plain

データ範囲を並べ替えする方法(昇順「小さい値から大きい値へ順番に並べ替え」や降順「大きい値から小さい値へ順番に並べ替え」)について説明します。

 

【目次】

 

構文

記述方法は、以下の通りとなります。

(1)昇順方法

=======================================================================

Range([セルの範囲]).Sort _
       Key1:=Range([KEY①]), Order1:=xlAscending, _
       Key2:=Range([KEY②]), Order2:=xlAscending, _
       Key3:=Range([KEY③]), Order2:=xlAscending

=======================================================================

[説明]:

[セルの範囲]には、並べ替えをするデータの範囲を指定します。[KEY①][KEY②][KEY③]には、並び替えのキーとなる列のセルを指定します。「xlAscending」は、昇順での並べ替えという指定になります。内容を纏めると、「[セルの範囲]に指定されているデータを、最初に[KEY①]で指定されたセルで昇順に並び替え、次に[KEY②]で指定されたセルで昇順に並び替え、最後に[KEY③]で指定されたセルで昇順に並び替えて下さい。」との意味になります。並べ替えするキー項目が1つしか無い場合([KEY①]のみで並べ替えする場合)は、[KEY②][KEY③]を省略する事もできます。

[記述例]:

Range("A1:C5").Sort _
        Key1:=Range("A1"), Order1:=xlAscending, _
        Key2:=Range("B1"), Order2:=xlAscending, _
        Key3:=Range("C1"), Order3:=xlAscending

 

(2)降順方法

=======================================================================

Range([セルの範囲]).Sort _
       Key1:=Range([KEY①]), Order1:=xlDescending, _
       Key2:=Range([KEY②]), Order2:=xlDescending, _
       Key3:=Range([KEY③]), Order2:=xlDescending

=======================================================================

[説明]:

[セルの範囲]には、並べ替えをするデータの範囲を指定します。[KEY①][KEY②][KEY③]には、並び替えのキーとなる列のセルを指定します。「xlDescending」は、降順での並べ替えという指定になります。内容を纏めると、「[セルの範囲]に指定されているデータを、最初に[KEY①]で指定されたセルで降順に並び替え、次に[KEY②]で指定されたセルで降順に並び替え、最後に[KEY③]で指定されたセルで降順に並び替えて下さい。」との意味になります。並べ替えするキー項目が1つしか無い場合([KEY①]のみで並べ替えする場合)は、[KEY②][KEY③]を省略する事もできます。

[記述例]:

Range("A1:C5").Sort _
        Key1:=Range("A1"), Order1:=xlDescending, _
        Key2:=Range("B1"), Order2:=xlDescending, _
        Key3:=Range("C1"), Order3:=xlDescending

 

使い方

使い方について、具体的に説明していきます。

並べ替え(昇順)

以下のサンプルを元に、並べ替え(昇順)について説明します。

[サンプル]:

f:id:m_kbou:20190528084317p:plain

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
    Range("A1:C5").Sort _
        Key1:=Range("A1"), Order1:=xlAscending, _
        Key2:=Range("B1"), Order2:=xlAscending, _
        Key3:=Range("C1"), Order3:=xlAscending
End Sub

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

内容は、「A1セル~C5セルの範囲を、最初にA1セルをキーとして昇順に並べ替え、次にB1セルをキーに昇順に並べ替え、最後にC1セルをキーに昇順に並べ替えして下さい。」との意味になります。

[実行例]:

f:id:m_kbou:20190528084353p:plain

並べ替え(昇順)についての説明は以上です。

 

並べ替え(降順)

以下のサンプルを元に、並べ替え(降順)について説明します。

[サンプル]:

f:id:m_kbou:20190528084317p:plain

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
    Range("A1:C5").Sort _
        Key1:=Range("A1"), Order1:=xlDescending, _
        Key2:=Range("B1"), Order2:=xlDescending, _
        Key3:=Range("C1"), Order3:=xlDescending
End Sub

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

内容は、「A1セル~C5セルの範囲を、最初にA1セルをキーとして降順に並べ替え、次にB1セルをキーに降順に並べ替え、最後にC1セルをキーに降順に並べ替えして下さい。」との意味になります。

[実行例]:

f:id:m_kbou:20190528084415p:plain

並べ替え(降順)についての説明は以上です。

 

並べ替え(昇順・降順混在)

以下のサンプルを元に、並べ替え(昇順・降順混在)について説明します。

[サンプル]:

f:id:m_kbou:20190528084317p:plain

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
    Range("A1:C5").Sort _
        Key1:=Range("A1"), Order1:=xlAscending, _
        Key2:=Range("B1"), Order2:=xlDescending, _
        Key3:=Range("C1"), Order3:=xlAscending
End Sub

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

内容は、「A1セル~C5セルの範囲を、最初にA1セルをキーとして昇順に並べ替え、次にB1セルをキーに降順に並べ替え、最後にC1セルをキーに昇順に並べ替えして下さい。」との意味になります。

[実行例]:

f:id:m_kbou:20190528084430p:plain

並べ替え(昇順・降順混在)についての説明は以上です。

 

おわりに

並べ替えは、データを扱う上では必須の作業となります。今回の説明内容を有効に活用して頂き、是非業務効率向上に役立ててもらえればと思います。