【VBA】指定した順番で並べ替えをおこなう

これで楽に!?VBA活用

こんにちは、Ryoです。
データ操作として並べ替えを利用する頻度が高いと思いますが、その並べ替えを行う際に基準(キー)を指定することでオリジナルの順番で並べ替えを行うこともできますので、今回はその内容について書いていきます。

スポンサーリンク

1.サンプル概要

ワークシート「Sheet1」にサンプルとして下のような表を作成しています。この表に対してB列の製品名を「製品B1,製品A2,製品A3,製品B2,製品A1」の順で指定して並べ替えを行います。

並べ替えの基準を指定して実行した結果が画像の通りです。このように指定した順番で並べ替えることも可能です。

以上がサンプル概要になります。

2.サンプルコード

Sub Sample1()
'***指定した順番で並べ替えを行う***

  'ワークシート「Sheet1」に対する処理
  With Worksheets("Sheet1").Sort
    '並べ替えの設定をクリア
    .SortFields.Clear
    '指定した順序で並べ替え設定を行う
    .SortFields.Add Key:=Range("B1"), _
     CustomOrder:="製品B1,製品A2,製品A3,製品B2,製品A1"
    '並べ替えのセル範囲を指定
    .SetRange Range("A1").CurrentRegion
    '最初の行にヘッダー情報が含まれるのでxlYes指定
    .Header = xlYes
    '並べ替えを実行
    .Apply
  End With

End Sub

使用するのはSortオブジェクトとAddメソッドになります。これらを用いたデータやセル色などでの並べ替えや引数・定数については以前記事を投稿していますのでご参考までに。

【VBA】並べ替えを行う(データ/セル色/文字色)
こんにちは、Ryoです。 2018年最初の投稿ですので、改めましてご挨拶を。 明けましておめでとうございます。本年も昨年同様、少しでもお役に立てるような内容を投稿していければと思っておりますので、今後ともよろしくお願い致します。 ...

今回は指定した順番で並べ替えを行っていますが、この並べ替えの基準(キー)は64個まで指定できます。また、AddメソッドをSortオブジェクトのSortFieldsプロパティに対して使用することで並べ替えの設定を追加することができます。

Addメソッドの引数CustomOrderに並べ替える値をカンマ区切りで指定します。

With Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(“B1”), _
CustomOrder:=”製品B1,製品A2,製品A3,製品B2,製品A1″

後は並べ替えのセル範囲指定や最初の行のヘッダー情報有無を指定して並べ替えを実行すればOKです。

3.まとめ

データを扱う中でソートすることは多いので、その手段の中に指定した順番で並べ替えを行うこともできるということを知っておくと便利なことも多いです。



扱い自体も引数のCustomOrderに基準(キー)を指定するだけなので特に難しいこともありませんから機会があれば活用をご検討くださいませ。

以上、指定した順番で並べ替えをおこなう方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました