連載
» 2016年08月18日 05時00分 公開

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

[薬師寺国安,PROJECT KySS]
前のページへ 1|2|3|4|5       

フィルターオプション機能AdvancedFilterメソッドの使い方

 フィルターオプションの機能を使うにはAdvancedFilterメソッドを使用する。書式は下記の通りだ。

AdvancedFilterメソッドの書式

Rangeオブジェクト.AdvancedFilter Action:={検索結果の表示場所} ,CriteriaRange:={検索条件の書かれている範囲},Unique:=True|False


 Uniqueは検索結果で重複するレコードの表示をTrueまたはFalseで指定。Trueの場合は重複コードを無視し、Falseの場合は重複コードも含めて表示する。

表14 {検索結果の表示場所}に指定する値
設定値 説明
xlFilterCopy フィルター処理したデータを新しい場所にコピー
xlFilterInPlace データをそのままリスト内に表示
参考「XlFilterAction 列挙(Excel)- MSDN

フィルターオプションの機能を使ってみよう

 図14のような表がある。

図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
リスト10 フィルターオプションを使ったデータの抽出

 B7のセルを基準にAdvancedFilterメソッドを使う(3行目)。Actionには抽出したデータをリスト内に表示するよう指定し(4行目)、CriteriaRangeに検索条件を指定するセルの範囲を指定する(5行目)。Uniqueには、Falseを指定して重複するデータも表示させている(6行目)。「実行」ボタンに、このマクロを登録する。

 フィルターオプションを解除するには、フィルターモードがオンになっていれば(9行目)、ShowAllDataメソッドで全てのデータを表示させる(10行目)。フィルターモードオプションがオフになる。

 「フィルターモードオプションの解除」ボタンに、このマクロを登録する。実行すると図15のようになる。

図15 「学年」に「2年」、「担任」に「綾瀬」と指定し「実行」ボタンをクリックした

 図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年に薬師寺聖と結成したコラボレーション・ユニット


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

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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