エクセルVBA 並び替え 複数の背景色をキーにして並び替えを行なうためのVBAコードを組み立てます。
背景色別に順番に整列させることが出来ます。
こんにちは じゅんぱ店長 (@junpa33) です。
VBAを使って、エクセルのセルデータの並び替えを行うツールを作成しています。
並び替えのキー項目を扱うVBAコードについて説明をしていきます。
今回は、セルの背景色で並び替えを行なうVBAコードの本体部分の説明です。
この背景色での並び替えは、Sortオブジェクトで可能な内容で、Sortメソッドでは対応していません。
Sortオブジェクトでは、あと、「文字の色」「セルのアイコン」で並び替えが出来るようにもなりました。
並び替えマクロ 記事階層
- マクロツール使い方と無料ダウンロード
- マクロツール作成手順
- 並び替えマクロを作成するVBAコードの概要
- 条件設定ボタンとボックスを配置するユーザーフォームのデザイン
- UserFormに設置したコントロールのイベントコードを記述する
- 別シートにまたぐのは可能?並び替えのコード設計
- 条件入力用のユーザーフォーム 表示・非表示と値の保存
- セル範囲内の空白行や結合にも対応したSortオブジェクトVBA
- 複数列に自由にキーを設定するVBA。Sort条件設定のコード
- 複数の背景色キーを指定できるVBAコードの組み立て
- 種類の違うKeyの同時指定はどちらが優先?VBAでは記述順
- 共有できない問題も解決!ユーザー設定リストの外部ファイル導入法
- 複数条件をまとめるプロシージャーを作成する
- 結果の切り出し機能 必要範囲をコピーし別シートに張付け
- 簡単に並びを解除するリスタート機能。再実行も即可能になる
- 並び替えマクロツール作成の全コード集
- 並び替えマクロを作成するVBAコードの概要
- 実際に使ってみる
この記事番号は7番です。
コンテンツ
複数の背景色キーで並び替えを行うVBA記述の要点
このコードを記述すれば並び替えが出来るという要点は以下の通りです。
- 並び替え条件を一旦クリアすること
- 並び替えの背景色キーのセル番地を指定すること
- 並び替えに背景色キーの利用を指定すること
- 並び順(昇順・降順)を指定すること
- 文字列と数値の並び替え区別をすること
- 並び替えの背景色キーを指定すること
- 並び替え範囲を指定すること
- 先頭行の種別を指定すること
- 並び替えを実行を指示すること
並び替えについての解説はこちらの記事をご覧ください。
データの並び替え VBA新旧のSortを実データで実証この中で語彙的に、並び替えルールとしては意味が少々分かりづらいものがあります。
④並び順(昇順・降順)とはナニ?
「黄色に昇順・降順があるの?」ということですが、この場合の並び順のルールは、
並び方・・・背景色キーのセル(のある行)が上から行番号順に並びます。そしてその並び順は保持されます。
昇 順・・・背景色キーの並び順が保持されたまま、その塊が行の最上位に並びます。
降 順・・・背景色キーの並び順が保持されたまま、その塊が行の最下位に並びます。
背景色キーの保持されている並び順自体を変更するには、異種複合キー(列キーと背景色キー)による並び替えを行なう必要があります。
複数の背景色キーを使った並び替えのVBAコード
複数の背景色を使って並べ替えを行うVBAはこのようになります。
もちろん設定条件は全て変数化しています。
Sub Sort背景色()
On Error Resume Next
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add(Cells(1, ClrNoACellc), _
xlSortOnCellColor, Stream4, , xlSortNormal). _
SortOnValue.Color = ClrNoA
ws.Sort.SortFields.Add(Cells(1, ClrNoBCellc), _
xlSortOnCellColor, Stream5, , xlSortNormal). _
SortOnValue.Color = ClrNoB
ws.Sort.SortFields.Add(Cells(1, ClrNoCCellc), _
xlSortOnCellColor, Stream6, , xlSortNormal). _
SortOnValue.Color = ClrNoC
With ws.Sort
.SetRange SSRange
.Header = Head
.Apply
End With
On Error GoTo 0
Cells(SSRange.Rows.Count, SSRange.Columns.Count). _
Offset(1, 1).Select
MsgBox "並び替えが完了しました。"
With ソートナビゲーター
.背景色選択1.Value = ""
.背景色選択2.Value = ""
.背景色選択3.Value = ""
End With
End Sub
- SortFields.Addは括弧( )で条件となる定数を指定していきます。
- Cells(1, ClrNo Cellc)はキーになるセルを指定していますが、セル番地というよりは列番号が重要になっているようです。
- xlSortOnCellColorは背景色をキーとして利用することを指定しています。
- Stream4・5・6は並び順を指定しています。(昇順・降順)
- SortOnValue.Color = ClrNo はキーになる背景色を指定しています。色の指定は、色番号でもRGB表記でも認識されます。
- SSRangeは並び替えの選択範囲を指定しています。
- Headは並び替え範囲の先頭行が見出し行かデータ行かを指定しています。
- Applyは並び替え実行を指示するメソッドです。
色指定の方法 参考まで
並び替えのキー項目としての色を指定する方法として、RGB表記で番号を打ち込む方法もあります。
例えば、セルの背景色を表現するときに、
Range(“D5”).Interior.Color = RGB(255, 255, 0)
と記述し実行すると、セルD5の背景色は「黄色」で表示されます。
RGB(255,255,0)は黄色ということが理解できます。
逆に、セルの背景色を見た時セルD5は黄色だけれど「RGB(255,255,0)」だと断言できる人はいないと思います。
それは「RGB(254,254,0)」だって黄色だからです。
これは、背景色で並び替えをした時には、当然、違う色の認識になります。
ですので、
黄色の並び替えとして、黄色のRGBコードを打ち込んでも「黄色違い」で並び替えされないこともあるという事です。
つまり
色をキーにして並べ替えを行う時は、やはり、「このセルの色、この文字の色」として直接クリック指定できる様にプログラムした方が便利なことは明らかということになります。
ちなみに、白色 RGB(255,255,255)で並び替えをしても、並び替えは実行されません。(仕様のようです)
エクセルの並び替えを複数の背景色で行うVBA まとめ
Sortオブジェクトを使えば、背景色を並び替えのキーとして実行できるようになります。
エクセルの作表時に、文字や数値のマーカーとして背景色の着色は頻繁に行っています。
単なる順位付けとは違った並び替えが可能になりますので、
これは是非使いこなしたい機能になっています。
VBAコードの組み立てもそんなに複雑にしなくても動くことが分かりましたので、うまく活用してきましょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。