エクセルVBA 並び替えマクロツールのセルの範囲指定について、4つのモードを紹介します。
範囲設定に起因する不注意な並び替えミスの注意メッセージも表示します。
こんにちは じゅんぱ店長 (@junpa33) です。
データの並び替えマクロツールを実践に近い形で試用してみます。
この並び替えマクロツールは、並び替え範囲の設定が4つのタイプで設定できるようになっています。
今回はその4つの並び替え範囲指定を順番に試していきます。
並び替えマクロ 記事階層
- マクロツール使い方と無料ダウンロード
- マクロツール作成手順
- 並び替えマクロを作成するVBAコードの概要
- 条件設定ボタンとボックスを配置するユーザーフォームのデザイン
- UserFormに設置したコントロールのイベントコードを記述する
- 別シートにまたぐのは可能?並び替えのコード設計
- 条件入力用のユーザーフォーム 表示・非表示と値の保存
- セル範囲内の空白行や結合にも対応したSortオブジェクトVBA
- 複数列に自由にキーを設定するVBA。Sort条件設定のコード
- 複数の背景色キーを指定できるVBAコードの組み立て
- 種類の違うKeyの同時指定はどちらが優先?VBAでは記述順
- 共有できない問題も解決!ユーザー設定リストの外部ファイル導入法
- 複数条件をまとめるプロシージャーを作成する
- 結果の切り出し機能 必要範囲をコピーし別シートに張付け
- 簡単に並びを解除するリスタート機能。再実行も即可能になる
- 並び替えマクロツール作成の全コード集
- 並び替えマクロを作成するVBAコードの概要
- 実際に使ってみる
コンテンツ
4つのデータ範囲の切り替えモード
4つのモードとは、
- 並び替えしたい範囲が、一つの大きなデータブロックの場合
- 並び替えしたい範囲について、そのデータブロックの中に空白行が存在する。
- 並び替えしたい範囲が、大きなデータの中の空白行で区切られた一部のデータ範囲
- 並び替えしたい範囲が、大きなデータの一部分
になります。それぞれについて試していきます。
①一つの大きなデータブロック
いわゆる一般的なデータベースの並び替えに利用するモードと考えます。
参考実例として、入庫品リスト(データ行全145行)を並び替えデータとして使用します。
合計金額が大きいものから順に並び替えを行ないます。
条件設定として
「データ範囲はひと塊で空白行は含まない」をクリック
データ範囲の先頭行は「見出しです」
列キーを「M列 合計」並び順を降順にセット
ユーザー設定リストを使わない
列キーの単独並び替え
ソートナビゲーターで条件を入力セットして並び替え実行ボタンをクリックします。
並び替えの一番ベーシックな部分です。問題なく並び替えが行われました。
②並び替え範囲の中に空白行が存在する
部署別、地域別や日別などの区別として空白行を利用している場合に利用します。並び替えは先頭行から行われます。
並び替えデータとして、先ほどのデータが10行づつに空白行で区切られているものを準備しました。
データNO.40までを担当別になる様に並び替えを行ないます。
条件設定として
「データ範囲には空白行が含まれる」をクリック
データ範囲の先頭は「見出しです」
列キーを「D列 担当」並び順を昇順にセット
ユーザー設定リストを使わない
列キーの単独並び替え
このモードで並び替えを行なう時は、「並び替えしたいデータ範囲の最終行のあるデータブロック内のセル」をクリック指定する必要があります。
データ行40行まで並び替えが行われました。
この時、データ行の中に有った空白行はまとめて、データの最後に移動します。
③空白行で挟まれたデータ範囲
データ表の中にあるセル範囲を指定する場合です。
並び替えデータとして、データ行NO.11からNO.40の間が空白行で挟まれているものを設定しました。
NO.11からNO.40の間だけを並び替えを行ないます。それ以外の部分は、そのままで変更させません。
条件設定
「データ範囲には空白行が含まれる」をクリック
データ範囲の先頭は「見出しではない」
列キーを「I列 出版社名」並び順を昇順にセット
ユーザー設定リストを使わない
列キーの単独並び替え
このモードで並び替えを行なう時は、「並び替えしたいデータ範囲の中にあるセル」をクリック指定する必要があります
データ行11行から40行までの並び替えが完了しました。ターゲット範囲以外には全く影響は出ていません。
④一部分のデータ範囲を並び替える
このモードでの並び替えのデータ表として、担当別にセル結合で分類したデータを使用します。
この状態で並び替えるとほぼ100%元のデータに復帰することは出来ません。
このデータ表を並び替えるには、大きく注意点が2つあります。
- 並び替え範囲内に結合セルが含まれてはいけない。
- 初期状態(並び替え以前)に戻す指標データを持っていること。
今回の並び替えは、各担当の内容を並び替えるということなので、並び替え」実行以前に
「担当別に小分類データ番号」を付与しておきます。
各担当ごとに担当する雑誌の冊数の多いもの順に並び替えを行ないます。
この「一部分のデータ範囲の並び替え」モードを選択した場合は、
部分範囲指定実行ボタンをクリックして、(マウスor手で)範囲を入力する必要があります。
データ範囲の入力時の画面と入力確定後の画面です。
入力確定すると指定範囲を明示しておくために、太幅の罫線で指定範囲が囲まれます。
罫線での範囲指定が不要なら、消去することが出来ます。
この操作で並び替えを実行すると、
同様に、目的の範囲の並び替えをすべて行います。
担当5人についての個別内容の並び替えが完了しました。
このタイプの並び替えについては、元のデータに回復させることを考慮した上で実行しましょう。
並び替えデータとして、先ほどのデータが10行づつに空白行で区切られているものを使用します。
先頭行からの並び替えの場合は②のモードになりますが、
データ行が11行から50行までの範囲を並び替える場合は、②のモードではなく④のモードを利用します。
条件設定
「データ範囲はより大きなデータ塊の中の一部分」をクリック
データ範囲の先頭は「見出しではない」
列キーを「E列 雑誌コード」並び順を昇順にセット
ユーザー設定リストを使わない
列キーの単独並び替え
並び替え完了のデータ表です。雑誌コードが昇順に並んでいます。
データ範囲の切り替えモードを使ってみた まとめ
セルのデータの並び替えにおいては、空白行の無いひと塊のデータを並び替えるのが一番の基本です。
エクセルの標準の並び替えツールでも、基本はセル範囲の選択が自動設定となっています。
この並び替えマクロツールでは、モード①とモード③に当たります。
エクセルの標準の並び替えツールでは、セル範囲の自動設定できないところは全て手動でセルの範囲選択を行うことになります。セル範囲を手動で設定した上で不用意に「OK」ボタンを押してしまうと、すぐそのまま、並び替えが実行されてしまいますので十分注意する必要があります。
この並び替えマクロツールでは、不用意な並び替え実行を防止するため、
最初に全体のデータ範囲を取得しておき、並び替え時のセル範囲が、事前に取得しているデータ表の列幅と異なる場合は、警告メッセージを表示するようにしています。
データ表を壊す(ぐちゃぐちゃにする)原因は、「不注意な並び替え範囲選択と、安易な並び替え実行」ですので、実行前の再確認を促すメッセージは結構有効ではないでしょうか。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。