Excel VBAで特定の列でデータ範囲を並べ替える
- VBA の特定の列でデータ範囲を並べ替える
-
VBA で
Range.Sort()
メソッドを使用して特定の列でデータ範囲を並べ替える - VBA でマクロを記録して特定の列でデータ範囲を並べ替える
- VBA で単一レベルの並べ替えを使用して特定の列でデータ範囲を並べ替える
- VBA で複数レベルの並べ替えを使用して特定の列でデータ範囲を並べ替える
- VBA でさまざまなパラメーターを使用して特定の列でデータ範囲を並べ替える
Excel VBAで特定の列でデータ範囲をソートするさまざまな方法を紹介します。
VBA の特定の列でデータ範囲を並べ替える
Excel には、リボンと並べ替えダイアログ ボックスで使用できるデータを並べ替える機能が組み込まれています。 それでも、コーディングでデータの並べ替えが必要な場合は常に、VBA を使用してデータを並べ替える必要がある場合があります。
特定のデータの並べ替えプロセス用のマクロを作成することで、多くの時間とエネルギーを節約できます。 マクロを使用すると、ワンクリックでプロセス全体を実行できます。
データの並べ替えは複数の手法を使用して行うことができ、データに適した方法を選択できます。 これらの方法については、次のセクションで 1つずつ説明します。
VBA で Range.Sort()
メソッドを使用して特定の列でデータ範囲を並べ替える
Range.Sort()
メソッドは、VBA でデータをすばやく並べ替えることができます。 ただし、VBA を使用してデータを並べ替えるときに、いくつかの追加パラメーターを定義する必要があります。
これらのパラメータには、Key
、Order
、および Header
が含まれます。
Key
- 並べ替えたい列を指定します。Order
- 順序の種類を指定します: 降順または昇順。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 でマクロを記録して特定の列でデータ範囲を並べ替える
VBA 並べ替え用のマクロの記録は、データの並べ替えにすべてのパラメーターを含める必要があるため複雑になる可能性がありますが、コードがどのように機能するかを示すので役立ちます。 このメソッドを Excel ワークシートに適用すると、次のようになります。
例:
# vba
Sub savedMacro()
Range("A1:B13").Sort Key1:=Range("A1"), _
Order1:=xlAscending, _
Header:=xlYes
End Sub
出力:
この例からわかるように、マクロを保存して、いつでも別のシートで使用できます。 コードは、複数の 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 コードを使用してデータを並べ替えるときに、複数のレベルを含めることができます。
たとえば、最初に Key1
をソートし、次に Key2
をソートするコードを実行するとします。 Order1
と Order2
の 2つの注文が含まれます。つまり、Order1
は Key1
に関連付けられ、Order2
は Key2
に関連付けられます。
コードは次のように機能します。
# 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 で 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