前回の「プログラムの肝! 条件分岐と繰り返しの基本文法とさまざまな書き方」で、本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」も半分まで来た。そろそろ、しんどくなるころではないだろうか。しかし、ここで音を上げていたら、何もできない。頑張っていこう。
今回は、「データの操作」をメインに解説する。「データ操作」は明日にでも業務に取り入れて使用できる処理ではないだろうか。Excelは、もともとデータを扱うものだから、データの操作はExcelの得意とするところだ。このデータの操作をVBAで処理できれば、業務の効率が俄然上がる。
そして、VBAの面白さ、醍醐味はExcelのデータを自分の思いのままに操作できる点にあると筆者は思っている。きっと、今回で「おーーー! ExcelのVBAでこんなこともできるのか!」といった感嘆の声が筆者には聞こえている…… ような気がする。
最初は、定番のソート処理(並び替え)から入ろう。
データの並び替えは、いうまでもなくデータ処理には100%必要な処理だ。もちろん、Excelのメニューからでも並び替えはできるが、マクロ化しておくと、Excelのメニューから行うより数倍手間が省ける。並び替えの処理をマクロ化していない業務は、時代遅れといわざるを得ない。ぜひ、この記事を参考にマクロ化してほしいと願う。
今回は紹介していないが(後の回で紹介)、ソートキーを入力する欄を作り、昇順、降順を選択リストから選択させて、ソートの条件を入力したら、ボタンクリックのみで、指定した条件でデータがソートされる。そんなマクロを書いて日常業務に取り入れると、今までの作業がばからしく思えてくるに違いない。
データの並べ替えを行うにはRangeオブジェクトのSortメソッドを使用する。書式(以降、構文、使い方の意)は下記の通りだ。
Rangeオブジェクト.Sort Key1:={Key1},Order1:={Order1},Key2:={Key2},Type:={Type},Order2:={Order2},Key3:={Key3},Order3:={Order3},Header:={Header},OrderCustom:={OrderCustom},MatchCase:={MatchCase},Orientation:={Orientation},SortMethod:={SortMethod},DataOption1:={DataOption1},DataOption2:={DataOption2},DataOption3:={DataOption3}
見た目、非常に多くの引数があって、大変に複雑そうだが、実際に使ってみると意外と簡単だ。各引数について説明しておこう(参考「Range.Sort Method(Excel)- MSDN」)。
並び順の値 | 説明 |
---|---|
xlAscending | 昇順(規定値) |
xlDescending | 降順 |
設定値 | 説明 |
---|---|
xlSortLabels | ピボットテーブルをラベルごとに並び替え |
xlSortValues | ピボットテーブルを値ごとに並び替え |
※ピボットテーブルとは、大量のデータを素早く集計、分析できるExcelの機能だ(今回の連載では出てこない) |
設定値 | 説明 |
---|---|
xGuess | 見出しがあるかどうかはExcelが特定する |
xlNo | 最初の行は見出しでない(規定値) |
xlYes | 最初の行は見出し |
設定値 | 説明 |
---|---|
xlSortColumns | 列単位で並び替え |
xlSortRows | 行単位で並び替え |
設定値 | 説明 |
---|---|
xlPinYin | ふりがな順 |
xlStroke | ふりがな順を使用しない(規定値) |
設定値 | 説明 |
---|---|
xlSortNormal | 数値と文字データを別個に並び替える(規定値) |
xlSortTextAsNumbers | 文字を数値データとして並び替える |
では、この書式を使って図1のような表の並び替えを行ってみよう。
図1の「社員番号」(B2セル)の表を、先頭行を見出しとして、「読み」を昇順、「性別」を降順、「年齢」を「昇順」に並び替えてみよう。マクロはリスト1のようになる。
Sub 並び替え() Range("B2").Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("E2"), Order2:=xlDescending, Key3:=Range("F2"), Order3:=xlAscending, Header:=xlYes End Sub
実行すると図2のように表示される。
「読み」が「昇順」でソートされ、性別が「降順」でソートされ、年齢は「昇順」でソートされている。
以上のようにSortメソッドには、非常にたくさんの引数が用意されているが、必要な分のみを使うことで、容易に自分の望み通りのソートが実現できる。読者の方々も、いろいろ設定して試してもらいたい。
次ページでは、表内のデータを検索する「データの検索」について解説しよう。
データの検索も、先のデータの並び替え同様、日常の業務では100%必要な処理だ。この解説を読んで、ぜひ貴社のデータ検索業務をマクロ化してほしい。
Copyright© 2014 ITmedia, Inc. All Rights Reserved.