VBAでExcelの列を並べ替える(4つの方法)

  • これを共有
Hugh West

でExcelで並べ替えるには ブイビーエー を適用する必要があります。 レンジソート メソッドを使用する方法を紹介します。 列を並べ替える をエクセルで表示します。 レンジソート ブイビーエー .

ワークブックダウンロード

練習用Excelワークブックは、こちらから無料でダウンロードできます。

VBAでカラムをソートする.xlsm

Excel VBAのRange.Sortメソッド

レンジソート メソッドで ブイビーエー は、Excelで値の範囲をソートします。 レンジ はオブジェクト変数であり、対象となるセル範囲を指定する。 昇順または降順でソートします。

以下は、このメソッドを使用する際に知っておく必要があるパラメータです。

パラメータ 必須/オプション データ型 商品説明
キー オプション バリアント 値をソートする範囲または列を指定する。
ご注文 オプション XlSortOrder 並べ替えの順番を指定する。
  • xlAscending = 昇順に並べ替えること。
  • xlDescending = 降順に並べ替えること。
ヘッダー オプション XlYesNoGuess 最初の行にヘッダを含むか否かを指定する。
  • xlNo = カラムにヘッダーがない場合; デフォルト値。
  • xlYes = カラムにヘッダーがある場合。
  • xlGuess = ヘッダーをExcelに決定させること。

VBAでExcelの列を並べ替える実装方法4選

このセクションでは、次のことを学びます。 ヘッダ付きとヘッダ無しの単一列を並べ替える , ヘッダ付きおよびヘッダなしの複数カラム を、どのように 列のヘッダをダブルクリックするだけでソートできる をExcelで表示します。

1.Excelでヘッダーのない1列を並べ替えるVBAを埋め込む

を希望する場合 単一列を並べ替える をExcelのワークシートに入力します。 ブイビーエー のコードを入力し、以下の手順に従ってください。

でソートするカラムです。 ブイビーエー のコードになります。

ステップス

  • プレス Alt + F11 キーボードから、またはタブで 開発者 -> Visual Basic を開く Visual Basic エディター .

  • ポップアップ・コード・ウィンドウで、メニューバーから インサート -> モジュール .

  • 以下のコードをコピーして、コードウィンドウに貼り付けてください。
 Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

これであなたのコードは実行できるようになりました。

これです。

  • Key1:=Range("B5")です。 → 指定された B5 で、どの列でソートするかをコードで知らせます。
  • オーダー1:=xlAscending → オーダーを指定する xlAscending で昇順に並べ、降順に並べたい場合は、次のように記述します。 xlDescending ではなく
  • ヘッダー:= xlNo → カラムにはヘッダがないので、ヘッダを指定する。 xlNo オプションを使用します。

  • プレス F5 をキーボードで入力するか、メニューバーから Run -> Run Sub/UserForm をクリックするだけでもOKです。 スモールプレイアイコン をクリックすると、マクロが実行されます。

カラムが表示されていることが確認できます。 しょうじゅんせいれつ .

ここでは、データ範囲を手動で次のように定義していることに注意してください。 レンジ("B5:B15") .

値を追加したり削除したりしてデータを変更したい場合は、データセットのセルを元に自動更新する以下のコードを実装します。

 Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

によって手動で範囲を定義する代わりに レンジ("B5:B15") と書いています。 レンジ( "B5", Range("B5"). End(xlDown)) .

空白のセルがある場合は、最初の空白のセルまでしか考慮されません。

続きを読む: VBAでExcelの表を並べ替える(4つの方法)

2.ヘッダー付きの1列をソートするVBAマクロを挿入する

前節では、ヘッダーのない1列のデータセットでしたが、今回は a ヘッダー付きカラム .

で仕分けする方法を今回は学びます。 VBAマクロ .

ステップス

  • 先ほどと同じように、開く Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
  • コードウィンドウで、以下のコードをコピーして貼り付けます。
 Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub 

これであなたのコードは実行できるようになりました。

これです。

  • Key1:=Range("B5")です。 → 指定された B5 で、どの列でソートするかをコードで知らせます。
  • オーダー1:=xlDescending → 今回は降順に並べ替えるので、以下のように指定します。 xlDescending .
  • ヘッダー:= xlYes → 今回はカラムにヘッダをつけるので、それを xlYes オプションを使用します。

  • 実行 このコードを入力すると ヘッダー付きカラムの降順での並べ替え .

続きを読む ExcelのVBAでListBoxをソートする方法(完全ガイド)

類似の読み物。

  • エクセルでIPアドレスを並べ替える方法(6つの方法)
  • [解決済み!】Excelのソートが効かない(2つの解決方法)
  • Excelで並べ替えボタンを追加する方法(7つの方法)
  • ExcelのVBAを使用した範囲の並べ替え(6例)
  • エクセルで名前順に並べる方法(3例)

3.複数の列をヘッダーあり/なしでソートするVBAマクロ

も可能です。 VBAコードでデータセットの複数の列をソートすることができます。

ステップス

  • 先に示したように、オープン Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
  • コードウィンドウで、以下のコードをコピーして貼り付けます。
 Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub. 

これであなたのコードは実行できるようになりました。

これです。

.SortFields.Add キー:=Range("B4"), 順序:=xlAscending

.SortFields.Add Key:=Range("C4"), Order:=xlAscending

この2行によって、私たちは次のように定義しています。 セルB4 C4 を並べ替えることができます。 2つのカラムが関連付けられています。 において しょうじゅんれい .

データセットにヘッダーがあるため、以下のように指定しました。 ヘッダー = xlYes そうでなければ、次のように書くことになります。 ヘッダー = xlNo をコードの中に入れてください。

  • 実行 このコードを入力すると ヘッダー付き昇順カラム .

4.エクセルでヘッダーをダブルクリックしてデータを並べ替えるマクロ

だけで、簡単にデータを並べ替えたい場合。 ヘッダーダブルクリック でできます。 ブイビーエー のコードで表示されます。

ステップス

  • 右クリック について シートタブ .
  • 表示されたオプションの一覧から 表示コード .
  • コードウィンドウが表示されますので、以下のコードをコピーして貼り付けてください。
 Private Sub Worksheet_Before DoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub. 
  • セーブ を表示します。

  • ここで、目的のワークシートに戻り、もし ヘッダーをダブルクリック をクリックすると、列が再編成されるのがわかります。

続きを読む: Excelでデータを並べ替え、フィルタリングする方法(完全ガイドブック)

覚えておきたいこと

  • の内部でセル参照の範囲を渡すときに、名前付きの範囲を作成して、それを代わりに使用することができます。 ソート メソッドで並べ替えたい場合。 A1:A10 のように、コード内で毎回渡すのではなく、名前付きの範囲を作成することができます。 ソート範囲 " と共に使用します。 レンジソート のような方法です。 Range("SortRange")の場合 .
  • データセットにヘッダがあるかどうかがわからない場合は xlGuess パラメータを使用します。

結論

この記事では、次の方法を紹介しました。 列を並べ替える エクセルで ブイビーエー この記事が皆様のお役に立てれば幸いです。 また、ご質問等ございましたら、お気軽にお問い合わせください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。