Excel VBAで特定の列でデータ範囲を並べ替える

Iqra Hasnain 2023年6月21日
  1. VBA の特定の列でデータ範囲を並べ替える
  2. VBA で Range.Sort() メソッドを使用して特定の列でデータ範囲を並べ替える
  3. VBA でマクロを記録して特定の列でデータ範囲を並べ替える
  4. VBA で単一レベルの並べ替えを使用して特定の列でデータ範囲を並べ替える
  5. VBA で複数レベルの並べ替えを使用して特定の列でデータ範囲を並べ替える
  6. VBA でさまざまなパラメーターを使用して特定の列でデータ範囲を並べ替える
Excel VBAで特定の列でデータ範囲を並べ替える

Excel VBAで特定の列でデータ範囲をソートするさまざまな方法を紹介します。

VBA の特定の列でデータ範囲を並べ替える

Excel には、リボンと並べ替えダイアログ ボックスで使用できるデータを並べ替える機能が組み込まれています。 それでも、コーディングでデータの並べ替えが必要な場合は常に、VBA を使用してデータを並べ替える必要がある場合があります。

特定のデータの並べ替えプロセス用のマクロを作成することで、多くの時間とエネルギーを節約できます。 マクロを使用すると、ワンクリックでプロセス全体を実行できます。

データの並べ替えは複数の手法を使用して行うことができ、データに適した方法を選択できます。 これらの方法については、次のセクションで 1つずつ説明します。

VBA で Range.Sort() メソッドを使用して特定の列でデータ範囲を並べ替える

Range.Sort() メソッドは、VBA でデータをすばやく並べ替えることができます。 ただし、VBA を使用してデータを並べ替えるときに、いくつかの追加パラメーターを定義する必要があります。

これらのパラメータには、KeyOrder、および Header が含まれます。

  1. Key - 並べ替えたい列を指定します。
  2. Order - 順序の種類を指定します: 降順または昇順。
  3. Header - Header データがソート処理に含まれるかどうかを VBA に伝えます。

B1 から B13 までの範囲のコード、列 B1、昇順、および VBA コードを使用したデータのヘッダーを使用するコードを以下に示します。

例:

# VBA
Sub usingRangeSort()
Range("B1:B13").Sort Key1:=Range("B1"), _
    Order1:=xlAscending, _
    Header:=xlYes
End Sub

出力:

Range.Sort を使用して VBA で並べ替え

例からわかるように、Range.Sort() メソッドを使用して範囲を並べ替えることができます。

VBA でマクロを記録して特定の列でデータ範囲を並べ替える

VBA 並べ替え用のマクロの記録は、データの並べ替えにすべてのパラメーターを含める必要があるため複雑になる可能性がありますが、コードがどのように機能するかを示すので役立ちます。 このメソッドを Excel ワークシートに適用すると、次のようになります。

例:

# vba
Sub savedMacro()
Range("A1:B13").Sort Key1:=Range("A1"), _
    Order1:=xlAscending, _
    Header:=xlYes
End Sub

出力:

保存されたマクロを使用して VBA で並べ替え

この例からわかるように、マクロを保存して、いつでも別のシートで使用できます。 コードは、複数の Excel ワークシートに適用されるコピー アンド ペースト プロセスを簡単に実行できるため、VBA コーディングによってバルク データのプロセスを早めることができます。

VBA で単一レベルの並べ替えを使用して特定の列でデータ範囲を並べ替える

このプロセスは、パラメーターを 1つずつ含める必要はなく、デフォルトのパラメーターを個別に使用するため、非常に簡単です。 ユーザーは、デフォルトで関連するすべてのワークシートのパラメーターを設定する必要があります。

メソッドのサンプルを以下に示します。

# vba
Sub SortWithSingleLevel()

Worksheets("Sheet1").Sort.SortFields.Clear

Range("A1:B13").Sort Key1:=Range("A1"), Header:=xlYes
End Sub

出力:

VBA での単一レベルの並べ替え

上記の例からわかるように、単一レベルの並べ替えで範囲を使用してシート データを並べ替えることができます。 ここで、複数レベルの並べ替えに対して同じことをしたい場合を想像してみましょう。

VBA で複数レベルの並べ替えを使用して特定の列でデータ範囲を並べ替える

VBA コードを使用してデータを並べ替えるときに、複数のレベルを含めることができます。

たとえば、最初に Key1 をソートし、次に Key2 をソートするコードを実行するとします。 Order1Order2 の 2つの注文が含まれます。つまり、Order1Key1 に関連付けられ、Order2Key2 に関連付けられます。

コードは次のように機能します。

# vba
Sub SortWithMultiLevel()

Worksheets("Sheet1").Sort.SortFields.Clear

Range("A1:B13").Sort Key1:=Range("A1"), Key2:=Range("B1"), Header:=xlYes, _
Order1:=xlAscending, Order2:=xlDescending

End Sub

出力:

VBA での複数レベルの並べ替え

上記の例からわかるように、複数のキーと順序を使用して、複数レベルの並べ替えで範囲を並べ替えることができます。

VBA でさまざまなパラメーターを使用して特定の列でデータ範囲を並べ替える

ここで、VBA での並べ替えに使用できるさまざまなパラメーターについて説明します。

VBA で SortOn パラメータを使用してデータを並べ替える

これは、日付の並べ替えプロセスを実行するパラメーターを定義します。 パラメーターは、セルの値、フォントの色、またはセル (背景) の色です。

初期設定はセル値で、以下のようになります。

# vba
SortOn:= xlSortOnValues

VBA で Order パラメータを使用してデータを並べ替える

順序は、昇順または降順として選択できます (以前の記事で説明したように)。 ただし、デフォルトの設定は昇順で、構文は次のとおりです。

# vba
Order:= xlAscending

VBA で DataOption パラメータを使用してデータを並べ替える

このパラメーターは、VBA コードが数値データとテキスト データを並べ替える方法を定義します。 このパラメーターを使用して、数字とテキストを別々に並べ替えることができます。 使用される構文は次のとおりです。

# vba
DataOption:= xlSortNormal

VBA で Header パラメータを使用してデータを並べ替える

データのヘッダーをソート処理に含めるかどうかを記述します。 header sorting の構文を以下に示します。

# vba
Header:= xlYes

ヘッダーがなく、最初から並べ替えを開始したい場合は、次のコードを使用できます。

# vba
Header:= xlNo

VBA で MatchCase パラメータを使用してデータを並べ替える

MatchCaseソートは、プロセスが大文字と小文字を区別するかどうかを定義します。 MatchCase sorting の構文を以下に示します。

# vba
MatchCase:= False

VBA で Orientation パラメータを使用してデータを並べ替える

パラメータは、上から下へ、または列を介してソートする方向を定義します。 デフォルトの構文を以下に示します。

# vba
Orientation:= xlTopToBottom