ExcelのVBAを使用して範囲を並べ替える方法(6例)

  • これを共有
Hugh West

ExcelのVBAを使用して範囲をソートする方法を知っておくと、日々の計算で時間と労力を節約できます。 Excelにはデフォルトでソート機能が備わっていますが レンジソート 方法 を使うと、通常よりも多くのオプションでデータセットをソートするためのいくつかのパラメータにアクセスすることができます。

練習用ワークブックをダウンロードする

この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。

Excelで範囲を並べ替える.xlsm

Excel VBAのRange.Sortステートメント入門

目的: セルデータの範囲をソートする。

構文です。

.ソート ( キー1 , 注文1 , キー2 , タイプ , オーダー2 , キー3 , オーダー3 , ヘッダー , オーダーメイド , マッチケース , オリエンテーション , SortMethod , データオプション1 , データオプション2 , データオプション3 )

ここでは を表します。 範囲 オブジェクト、すなわち、セル、行、列、またはセルの選択。

論拠となる。

提供する必要があります。 3 の主なパラメータです。 レンジソート 方法です。

キー - 並べ替えの対象となる、単一または複数の列のセルの範囲。

ご注文 - 昇順、降順のいずれかを指定します。

ヘッダー - ソートされる列がヘッダを持つか否かを宣言する。

Excel VBAで範囲をソートする6つの例

今回は、人名と生年月日、年齢のリストをデータセットとして、さまざまな方法でソートしてみます。 記事の中で、これらの方法を練習してマスターしましょう。

1. Excel VBAで1列の範囲をソートする

この例では 出身者 最高齢 まで 最年少 を使用する手順を説明します。 範囲 . ソート 方法 そうすれば その 年齢欄 において 降順 .

ステップス

  • に行ってみてください。 デベロッパータブ において エクセルリボン まで クリック について ビジュアルベーシック

  • そして、次のように選びます。 モジュールオプション から 挿入タブ を開くことができます。 新モジュール .

さて、このコードを その 年齢 のカラム範囲です。

1.1 ヘッダー付きカラム

以下のコードをビジュアルコードエディタに入れます。

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub 

プレス F5 をクリックするか 実行 ボタンを押すと 果たす を表示します。

説明する。

上記のコードでは

式(Rangeオブジェクト)=Range("D4:D11"); その 年齢欄 を持っています。 ヘッダー において セルD4 価値観 において D5:D11です。

キー = Range("D4")。 その キー にとって の仕分けを行います。

Order= xlDescending。 したいように からの値 最大 まで 最低 を設定しました。 整列順序 かわりに を下降させる。

ヘッダー =xlYes; 以下のスクリーンショットでは データセット があります。 ヘッダー のそれぞれについて の欄があります。

1.2 ヘッダーのないカラム

以下のコードをビジュアルコードエディタに入れます。

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

プレス F5 をクリックするか 実行 ボタンを押すと 果たす を表示します。

説明する。

上記のコードでは

式(Rangeオブジェクト)=Range("D4:D10"); その 年齢欄 がなければ ヘッダー 持つ 価値観 において D4:D10です。

キー = Range("D4")。 その キー にとって の仕分けを行います。

Order= xlDescending。 したいように からの値 最大 まで 最低 を設定しました。 整列順序 かわりに を下降させる。

ヘッダー =xlNo; 以下のスクリーンショットでは データセット ない ヘッダを表示します。

関連コンテンツ Excelでデータを混在させずに列を並べ替える方法(3つの方法)

2. VBAコードでExcelの複数列の範囲をソートする

でソートを表示するには 複数カラム が必要です。 モディファイ 我が データセット ちょっとだけ てんぷ 一二 漕ぎ手 修正後のデータセットでは、行 7, 8, 9 ある 同じ の値を設定します。 生年月日 百歳 けど さんみょう . これらの 人名 アール ノット 何れにしても 特定命令 昇降の

この例では、名前の順番を しょうじゅんれい ビジュアルベーシックエディターで次のコードを実行してみましょう。

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

説明する。

上のスクリーンショットでは、年齢が D列 アール ソート済み において 下行 を追加しました。 さらに2つのパラメータ を以前のコードに追加しました。

Key2: =Range("B4")です。 は、名前を並べ替えるためのキーです。

Order2: =xlAscending は、その 言いつけ にとって 空売り .

その結果、私たちは 人名 において 七・八・九列 は今 アルファベット順に ぶんるい 上昇 の注文を受け付けています。

以下のスクリーンショットでは 価値 Order2 パラメータ まで その 人名 において 下行 の注文を受け付けています。

続きを読む エクセルで複数の列を並べ替える方法(5つの簡単な方法)

3. Excel VBAでヘッダーをダブルクリックして列の範囲をソートする

Excelのデフォルトのソート機能では、以下のことができません。 せいれつち による列の ダブルクリック その 列の見出し VBAのコードを使って、この機能を実現することができます。 次のコードを適用して、この機能を説明しましょう。

 Private Sub Worksheet_Before DoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub. 

このコードでは BeforeDoubleClickイベント まで 通常のダブルを無効にする - クリック を開始することである。 編集 このイベントを実行中に 二重 - クリック のいずれかになります。 カラムヘッダー のカラムデータをソートします。 しょうじゅんれい .

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

類似の読み物。

  • Excelで並べ替えボタンを追加する方法(7つの方法)
  • エクセルでユニークリストを並べ替える(10の便利な方法)
  • エクセルVBAでソート関数を使う方法(8つの適切な例)
  • Excelで重複をソートする(列と行)
  • Excelでのランダムソート(数式+VBA)

4. Excel VBAを使った背景色に基づく列範囲の並べ替え

列のセル範囲を並べ替えることができる ベース を、その 背景色 そのために必要なことは つける a パラメータ 名前付き ソートオン を有するものである。 値 xlSortOnCellColor ソートを実証するために、まず、さまざまな 背景色 の行に、私たちの データセット .

次に、Visual Basic コードエディターで コピー を入力してください。 F5 を実行します。

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range("B4:D10") .Apply End With End Sub. 

以下のスクリーンショットでは ソート済みデータセット を背景色とする。

説明する。

  • この例では ワークシート " 背景 「というように、コード内に" 背景 「を私たちの アクティブなワークシート名。
  • を設定しました。 B4 として キー B4:D10 として レンジ このコードでは、キーに基づいてデータがソートされます。
  • を指定しなかったので ヘッダパラメータ の場合、コードはデフォルトで実行されます。 ヘッダなし。
  • を設定しました。 言いつけ というパラメータがあります。 を上昇させる。 ということで、値の小さいものから大きいものへとソートされました。 .

続きを読む エクセルで色で並べ替える方法(4つの基準)

5. フォントの色に基づいて列の範囲をソートするVBAコードを適用する

VBAのコードを適用することで、データセットの並べ替えを行うことができます。 フォントカラー .まず、必要なのは 塗り分ける を例に挙げて説明します。

以下のコードを適用して、データセットを以下の基準でソートします。 フォントの色

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11").Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub... 

説明する。

  • この例では ワークシート " フォントカラー 「というように、コード内に" フォントカラー 「を私たちの アクティブなワークシート名。
  • を設定しました。 B4 として キー B4:D11 として レンジ このコードでは、キーに基づいてデータがソートされます。
  • また、この例では、ヘッダーパラメーターを xlYes .
  • ここで、設定するのは 言いつけ というパラメータがあります。 を上昇させる。 ということで、値の小さいものから大きいものへとソートされました。 .
  • の値です。 ソートオン パラメータは
  • があります。 オリエンテーション・パラメータ の値を保持します。 xlTopToBottom を必須としています。
  • カラー の値を持つRGBの用語でソートします。 0 まで 255 .

続きを読む Excelで2列を一致(完全一致と部分一致の両方)させる並べ替え方法

6. Excel VBAでソート範囲の向きを変更する

を使用しています。 オリエンテーション パラメータを使用すると、データの並べ替え方法を変更できます。 この例では ちゅうびゅう のデータセットに それ よこに .

次のコードをビジュアルベーシックエディタに入れ、F5キーを押して実行してみましょう。

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

ここで私たちは ソート済み をベースにしたデータです。 年齢層 において 上昇 申し込む まで せいかい コードでは オリエンテーション というパラメータがあります。 xlSortRows .

関連コンテンツ エクセルで複数の列を自動で並べ替える方法(3つの方法)

覚えておきたいこと

  • があります。 SortOnパラメータ というのは に基づく列の範囲です。 背景色 フォントカラー が使用できるのは ワークシートオブジェクト で使用することはできません。 範囲オブジェクト .
  • があります。 BeforeDoubleClickイベント でのみデータをソートします。 を上昇させる。

結論

今、私たちは、ExcelのVBAを使用して範囲を並べ替える方法を知っています。 うまくいけば、それはあなたがより自信を持ってこれを使用することをお勧めします。 任意の質問や提案は、以下のコメントボックスにそれらを置くことを忘れないでください。

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