Excelの醍醐味! 明日からできるデータの並べ替え、検索、置換、抽出:Excelマクロ/VBAで始める業務自動化プログラミング入門(7)(5/5 ページ)
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、データ操作のメソッド、Sort、Find、FindNext、Replace、AutoFilter、AdvancedFilterなどの使い方について、実例を交えて解説する【Windows 10、Excel 2016に対応】。
フィルターオプション機能AdvancedFilterメソッドの使い方
フィルターオプションの機能を使うにはAdvancedFilterメソッドを使用する。書式は下記の通りだ。
AdvancedFilterメソッドの書式
Rangeオブジェクト.AdvancedFilter Action:={検索結果の表示場所} ,CriteriaRange:={検索条件の書かれている範囲},Unique:=True|False
Uniqueは検索結果で重複するレコードの表示をTrueまたはFalseで指定。Trueの場合は重複コードを無視し、Falseの場合は重複コードも含めて表示する。
設定値 | 説明 |
---|---|
xlFilterCopy | フィルター処理したデータを新しい場所にコピー |
xlFilterInPlace | データをそのままリスト内に表示 |
参考「XlFilterAction 列挙(Excel)- MSDN」 |
フィルターオプションの機能を使ってみよう
図14のような表がある。
フィルターオプション機能を使うとB5〜E5に指定した検索条件を元にデータの抽出ができる。
「学年」は「3年」で「担当」が「綾瀬」のデータを抽出するにはリスト10のようなマクロを書く。
Option Explicit Sub フィルターオプションを使ったデータの抽出() Range("B7").CurrentRegion.AdvancedFilter _ Action:=xlFilterInPlace, _ CriteriaRange:=Range("B4:E5"), _ Unique:=False End Sub Sub フィルターオプションの解除() If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData End If End Sub
B7のセルを基準にAdvancedFilterメソッドを使う(3行目)。Actionには抽出したデータをリスト内に表示するよう指定し(4行目)、CriteriaRangeに検索条件を指定するセルの範囲を指定する(5行目)。Uniqueには、Falseを指定して重複するデータも表示させている(6行目)。「実行」ボタンに、このマクロを登録する。
フィルターオプションを解除するには、フィルターモードがオンになっていれば(9行目)、ShowAllDataメソッドで全てのデータを表示させる(10行目)。フィルターモードオプションがオフになる。
「フィルターモードオプションの解除」ボタンに、このマクロを登録する。実行すると図15のようになる。
図15からフィルターオプションを解除するには[フィルターオプションの解除]ボタンをクリックすると図14の下の表のように表示される。該当するデータがなかった場合は、リストに何も表示されない。
次回は、統計データの「グラフ操作」について
「データ操作」の処理は理解できただろうか。筆者は、VBAは初心者だがプログラムの経験があるので、この辺りまでは何とか理解できる。しかし、プログラムの初心者にとっては、難解なコードもあったかもしれない。できるだけ分かりやすく解説したつもりだが、皆さんはどう受けとめただろうか。筆者としては気になるところだ。
また、「データ操作」のマクロは明日からでも実務に応用できる処理も紹介したつもりだ。ぜひ、今回紹介するマクロを自分で書いて動かし、できればカスタマイズして動作を確認してほしい。
次回は、今回紹介した「データ操作」に関連して、統計データの「グラフ操作」について解説する予定だ。
■更新履歴
【2016/8/18】Windows 10、Excel 2016に対応しました。
参考書籍
著者プロフィール
PROJECT KySS 薬師寺 国安(やくしじ くにやす)
1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。