連載
» 2014年03月07日 18時00分 UPDATE

Excelマクロ/VBAで始める業務自動化プログラミング入門(7):Excelの醍醐味! 明日からできるデータの並び替え、検索、置換、抽出 (1/5)

プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、データ操作のメソッド、Sort、Find、FindNext、Replace、AutoFilter、AdvancedFilterなどの使い方について、実例を交えて解説する。

[薬師寺国安,PROJECT KySS]

明日、マクロいない

 前回の「プログラムの肝! 条件分岐と繰り返しの基本文法とさまざまな書き方」で、本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」も半分まで来た。そろそろ、しんどくなるころではないだろうか。しかし、ここで音を上げていたら、何もできない。頑張っていこう。

 今回は、「データの操作」をメインに解説する。「データ操作」は明日にでも業務に取り入れて使用できる処理ではないだろうか。Excelは、もともとデータを扱うものだから、データの操作はExcelの得意とするところだ。このデータの操作をVBAで処理できれば、業務の効率が俄然上がる。

 そして、VBAの面白さ、醍醐味はExcelのデータを自分の思いのままに操作できる点にあると筆者は思っている。きっと、今回で「おーーー! ExcelのVBAでこんなこともできるのか!」といった感嘆の声が筆者には聞こえている…… ような気がする。

データの並び替え(ソート)

 最初は、定番のソート処理(並び替え)から入ろう。

 データの並び替えは、いうまでもなくデータ処理には100%必要な処理だ。もちろん、Excelのメニューからでも並び替えはできるが、マクロ化しておくと、Excelのメニューから行うより数倍手間が省ける。並び替えの処理をマクロ化していない業務は、時代遅れといわざるを得ない。ぜひ、この記事を参考にマクロ化してほしいと願う。

 今回は紹介していないが(後の回で紹介)、ソートキーを入力する欄を作り、昇順、降順を選択リストから選択させて、ソートの条件を入力したら、ボタンクリックのみで、指定した条件でデータがソートされる。そんなマクロを書いて日常業務に取り入れると、今までの作業がばからしく思えてくるに違いない。

Sortメソッドの使い方

 データの並べ替えを行うにはRangeオブジェクトのSortメソッドを使用する。書式(以降、構文、使い方の意)は下記の通りだ。

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」)。

  • {Key1}には並べ替えの基準とする列を指定{Order1}には{Key1}で指定した値の並び順(表1)を指定
  • {Key2}には2番目に並べ替えの基準とする列を指定。{Type}にはピボットテーブルを並び替える時の基準(表2)を指定。{Order2}にはKey2で指定した値の並び順(表1)を指定
  • {Key3}には3番目に並び替えの基準とする列を指定。{Order3}にはKey3で指定した値の並び順(表1)を指定
  • {Header}には、最初の行が見出しかどうかを設定(表3)参照
  • {OrderCustom}には、特に今回は指定する必要はない
  • {MatchCase}には大文字、小文字の区別をTrueかFalseで指定。Trueを指定すると区別する。区別しない場合はFalse
  • {Orientaion}には並び替えの方向を指定(表4)参照
  • {SortMethod}には並び替えの方法(表5)を指定
  • {DataOption1}にはKey1の並び替えの方法(表6)を指定
  • {DataOption2}にはKey2の並び替えの方法(表6)を指定
  • {DataOption3}にはKey3の並び替えの方法(表6)を指定
表1 {Order1〜3}に指定する値
並び順の値 説明
xlAscending 昇順(規定値)
xlDescending 降順


表2 {Type}に指定する値
設定値 説明
xlSortLabels ピボットテーブルをラベルごとに並び替え
xlSortValues ピボットテーブルを値ごとに並び替え
※ピボットテーブルとは、大量のデータを素早く集計、分析できるExcelの機能だ(今回の連載では出てこない)


表3 {Header}に指定する値
設定値 説明
xGuess 見出しがあるかどうかはExcelが特定する
xlNo 最初の行は見出しでない(規定値)
xlYes 最初の行は見出し


表4 {Orientaion}に設定する値
設定値 説明
xlSortColumns 列単位で並び替え
xlSortRows 行単位で並び替え


表5 {SortMethod}に指定する値
設定値 説明
xlPinYin ふりがな順
xlStroke ふりがな順を使用しない(規定値)


表6 {DataOption}に指定する値
設定値 説明
xlSortNormal 数値と文字データを別個に並び替える(規定値)
xlSortTextAsNumbers 文字を数値データとして並び替える

表の並び替えを行ってみよう

 では、この書式を使って図1のような表の並び替えを行ってみよう。

vba7_01.jpg 図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
リスト1 各項目を並び替える

 実行すると図2のように表示される。

vba7_02.jpg 図2 「読み」「性別」「年齢」が並び替えられている

 「読み」が「昇順」でソートされ、性別が「降順」でソートされ、年齢は「昇順」でソートされている。

 以上のようにSortメソッドには、非常にたくさんの引数が用意されているが、必要な分のみを使うことで、容易に自分の望み通りのソートが実現できる。読者の方々も、いろいろ設定して試してもらいたい。


 次ページでは、表内のデータを検索する「データの検索」について解説しよう。

 データの検索も、先のデータの並び替え同様、日常の業務では100%必要な処理だ。この解説を読んで、ぜひ貴社のデータ検索業務をマクロ化してほしい。

       1|2|3|4|5 次のページへ

Copyright© 2014 ITmedia, Inc. All Rights Reserved.

TechTargetジャパン

メルマガ購読キャンペーン

コメント

ツイート

注目のテーマ

PickUpイベント

- PR -

アクセスランキング

    転職/派遣情報を探す

    【転職サーチ】SIer/Web企業/新規事業 スマホ開発で、あなたのキャリアを生かす

    「派遣・フリーで働くメリット」とは? 活躍する派遣エンジニアの本音

    ホワイトペーパー(TechTargetジャパン)

    RSSについて

    アイティメディアIDについて

    メールマガジン登録

    @ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。