空白行の無視モードもあるデータ範囲指定の切り替え設定

vbanarabihanitamesieyecatch

エクセルVBA 並び替えマクロツールのセルの範囲指定について、4つのモードを紹介します。
範囲設定に起因する不注意な並び替えミスの注意メッセージも表示します。

こんにちは じゅんぱ店長 (@junpa33) です。

データの並び替えマクロツールを実践に近い形で試用してみます。

この並び替えマクロツールは、並び替え範囲の設定が4つのタイプで設定できるようになっています。

今回はその4つの並び替え範囲指定を順番に試していきます。

並び替えマクロ 記事階層

4つのデータ範囲の切り替えモード

4つのモードとは、

  1. 並び替えしたい範囲が、一つの大きなデータブロックの場合
  2. 並び替えしたい範囲について、そのデータブロックの中に空白行が存在する。
  3. 並び替えしたい範囲が、大きなデータの中の空白行で区切られた一部のデータ範囲
  4. 並び替えしたい範囲が、大きなデータの一部分

になります。それぞれについて試していきます。

①一つの大きなデータブロック

いわゆる一般的なデータベースの並び替えに利用するモードと考えます。

参考実例として、入庫品リスト(データ行全145行)を並び替えデータとして使用します。

入庫品リスト(データ行全145行)
並び替え元データ①

合計金額が大きいものから順に並び替えを行ないます。

 条件設定として 

「データ範囲はひと塊で空白行は含まない」をクリック

データ範囲の先頭行は「見出しです」

列キーを「M列 合計」並び順を降順にセット

ユーザー設定リストを使わない

列キーの単独並び替え

ソートナビゲーターで条件を入力セットして並び替え実行ボタンをクリックします。

並び替えの設定①
narabimacrotest002aa
ソートナビゲーターの設定①
narabimacrotest003aa
並び替え後のデータ表①

並び替えの一番ベーシックな部分です。問題なく並び替えが行われました。

②並び替え範囲の中に空白行が存在する

部署別、地域別や日別などの区別として空白行を利用している場合に利用します。並び替えは先頭行から行われます。

並び替えデータとして、先ほどのデータが10行づつに空白行で区切られているものを準備しました。

並び替えの元データ②

データNO.40までを担当別になる様に並び替えを行ないます。

 条件設定として 

「データ範囲には空白行が含まれる」をクリック

データ範囲の先頭は「見出しです」

列キーを「D列 担当」並び順を昇順にセット

ユーザー設定リストを使わない

列キーの単独並び替え

このモードで並び替えを行なう時は、「並び替えしたいデータ範囲の最終行のあるデータブロック内のセル」をクリック指定する必要があります。

並び替えの設定②
ソートナビゲーターの設定②
並び替え後のデータ表②

データ行40行まで並び替えが行われました。

この時、データ行の中に有った空白行はまとめて、データの最後に移動します。

③空白行で挟まれたデータ範囲

データ表の中にあるセル範囲を指定する場合です。

並び替えデータとして、データ行NO.11からNO.40の間が空白行で挟まれているものを設定しました。

並び替えの元データ③

NO.11からNO.40の間だけを並び替えを行ないます。それ以外の部分は、そのままで変更させません。

 条件設定 

「データ範囲には空白行が含まれる」をクリック

データ範囲の先頭は「見出しではない」

列キーを「I列 出版社名」並び順を昇順にセット

ユーザー設定リストを使わない

列キーの単独並び替え

このモードで並び替えを行なう時は、「並び替えしたいデータ範囲の中にあるセル」をクリック指定する必要があります

並び替えの設定③
ソートナビゲーターの設定③
並び替え後のデータ表③

データ行11行から40行までの並び替えが完了しました。ターゲット範囲以外には全く影響は出ていません。

④一部分のデータ範囲を並び替える

このモードでの並び替えのデータ表として、担当別にセル結合で分類したデータを使用します。

この状態で並び替えるとほぼ100%元のデータに復帰することは出来ません。

このデータ表を並び替えるには、大きく注意点が2つあります。

  •  並び替え範囲内に結合セルが含まれてはいけない。
  •  初期状態(並び替え以前)に戻す指標データを持っていること。
並び替えの元データ④

今回の並び替えは、各担当の内容を並び替えるということなので、並び替え」実行以前に

「担当別に小分類データ番号」を付与しておきます。

並び替えの元データ④の適正化データ

各担当ごとに担当する雑誌の冊数の多いもの順に並び替えを行ないます。

ソートナビゲーターの設定④

この「一部分のデータ範囲の並び替え」モードを選択した場合は、

部分範囲指定実行ボタンをクリックして、(マウスor手で)範囲を入力する必要があります。

並び替えの範囲設定④
並び替えの範囲確定④

データ範囲の入力時の画面と入力確定後の画面です。

入力確定すると指定範囲を明示しておくために、太幅の罫線で指定範囲が囲まれます。

罫線での範囲指定が不要なら、消去することが出来ます。

この操作で並び替えを実行すると、

一部分の範囲並び替え後のデータ表

同様に、目的の範囲の並び替えをすべて行います。

並び替え後のデータ表④

担当5人についての個別内容の並び替えが完了しました。

データはすでに壊れています。

一部分データの並び替えを行ないましたが、この時点ですでにデータ全体としては壊れた状態になっています。

このサンプルで言うと、

D列(担当列)を左右の境として、左列と右列の関連性が失われています。

もし元に復元が出来なければ、このデータは壊れて使えない状態のものとなってしまいます。

解決法

  • 並び替え実行以前に、元データは安全なところに保管しておき、元データのコピーを使って並び替えを行なう。(強く推奨します)
  • 一セクション(担当)ごとに並び替えを行ない、この「並び替えマクロツール」にある「切り出し」機能で並び替えた結果のデータを移動させた後、すぐ並び替えを元に戻す。(小分類NOで並び替え戻しを行う)

このタイプの並び替えについては、元のデータに回復させることを考慮した上で実行しましょう。

(番外)範囲の中に空白行があるが、データ全体の途中にある範囲

並び替えデータとして、先ほどのデータが10行づつに空白行で区切られているものを使用します。

narabimacrotest004aa

先頭行からの並び替えの場合は②のモードになりますが、

データ行が11行から50行までの範囲を並び替える場合は、②のモードではなく④のモードを利用します。

 条件設定 

「データ範囲はより大きなデータ塊の中の一部分」をクリック

データ範囲の先頭は「見出しではない」

列キーを「E列 雑誌コード」並び順を昇順にセット

ユーザー設定リストを使わない

列キーの単独並び替え

番外ソートナビゲーターの設定
番外並び替えの範囲設定
番外並び替えの範囲設定確定

並び替え完了のデータ表です。雑誌コードが昇順に並んでいます。

番外並び替え後のデータ表

データ範囲の切り替えモードを使ってみた まとめ

セルのデータの並び替えにおいては、空白行の無いひと塊のデータを並び替えるのが一番の基本です。

エクセルの標準の並び替えツールでも、基本はセル範囲の選択が自動設定となっています。

この並び替えマクロツールでは、モード①とモード③に当たります。

エクセルの標準の並び替えツールでは、セル範囲の自動設定できないところは全て手動でセルの範囲選択を行うことになります。セル範囲を手動で設定した上で不用意に「OK」ボタンを押してしまうと、すぐそのまま、並び替えが実行されてしまいますので十分注意する必要があります。

この並び替えマクロツールでは、不用意な並び替え実行を防止するため

最初に全体のデータ範囲を取得しておき、並び替え時のセル範囲が、事前に取得しているデータ表の列幅と異なる場合は、警告メッセージを表示するようにしています。

データ表を壊す(ぐちゃぐちゃにする)原因は、「不注意な並び替え範囲選択と、安易な並び替え実行」ですので、実行前の再確認を促すメッセージは結構有効ではないでしょうか。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min