データを扱う時のいろいろな操作 2

■ Excel豆知識43





43-3 フィルタオプション(フィルタオプションの設定をマクロボタンに登録)
今度はフィルタオプションの設定をマクロにしようと思います。

なお、今回の抽出もすべて、下記の設定で行っています。
「リスト範囲」が「データ」シートに、「検索条件範囲」が「抽出条件」シートに、「抽出先」が「抽出」シートに

「リスト範囲」が「データ」シートに、「検索条件範囲」が「抽出条件」シートに、「抽出先」が「抽出」シートに
[図04343]


フィルタオプションの操作手順	
(1)「抽出」シートで「フィルタオプションの設定」のダイアログボックスを出す。
(2)「リスト範囲」に「データ」シートの「A1:G117」の範囲を設定。
(3)「検索条件範囲」に「検索条件」シートの「A1:C4」の範囲を設定。
(4)「抽出範囲」に「抽出」シートの「A3」セルを設定。
(5)「OK」として抽出を行う。

この手順を「マクロの記録」ですると、下記のようなコードが記録されます。
フィルタオプションの操作をマクロの記録ですると
[図04344]

ここで緑で囲んだ抽出先はいつも同じなのでこのままでいいのですが、赤で囲んだデータ範囲と
青で囲んだ抽出条件範囲は可変にしておいた方がいろいろな場合に対応できて便利です。

そこで下図のようなコードに書き換えます。
フィルタオプションの設定ボタンに登録するコード
[図04345]

下図はコードに説明のコメントをつけたものです。
コードのコメント
[図04346]

[図04346]の赤で囲んだ部分ではデータシートの「最終列」「D列」と「最終行」「117行」を求
めてA1:G117の範囲を「myData」という変数に入れています。
(データの途中に空白行などがあっても対応出来ますし、データのフィールドが増えても対応出
来ます。)
「myData」
[図04347]

[図04346]の青で囲んだ部分では、A1セルを起点として繋がった範囲を「myCriteria」という変
数に入れています。これは下左図のようにA1セルを選択した状態でCtrlキーを押しながらテンキ
ーの「*」を押すと下右図のように繋がった範囲が選択されますが、この範囲を
「Worksheets("抽出条件").Range("A1").CurrentRegion」というコードで求めています。
(ノートPCならA1セルを選択した状態でCtrlキーとShiftキーを同時に押しながら「*」を押すと
同様の範囲選択が出来ます。)
「myCriteria」
[図04348]

データシートで最終行最終列を求めて範囲を指定するやり方よりは、こちらのやり方のほうが抽
出条件範囲を求めるのには向いていると思います。

緑で囲んだ部分では「抽出」シートに表示されているものを一旦消去して新しい抽出に備えてい
ます。

今度はこのコードを「抽出」シートにボタンを配置してそこに登録します。
ボタンにマクロを登録するやり方は「Excel豆知識34-5」:マクロをボタンに登録を参照してください。


下図のようにマクロを登録した「抽出」シートにあるボタンをクリックします。
マクロを登録したボタンをクリック
[図04349]

すると、このように「日付」が「10月以降」または、「担当者」が「小倉」または、「地区」
が「東森」であるデータが抽出されます。
「抽出」シートの抽出結果
[図04350]


抽出条件を下図のように変更し、再びボタンをクリックすれば、
抽出条件を変更
[図04351]
このように新しい抽出結果が表示されます。
「抽出」シートの抽出結果
[図04352]



また、「データ」シートのデータを下図のように別のものをもってきて、
データを別のものに変更
[図04353]
「抽出条件」シートに下図のように設定し、
「抽出条件」シートの抽出条件も変更
[図04354]
「抽出」シートでボタンをクリックすると、下図のように平均が10位以内が抽出されます。
「抽出」シートの抽出結果
[図04355]

「別データ」シートに上記のデータを用意しておきますので、「データ」シートにコピペして
試してみてください。

今回はこれでおしまいです。
ページTOPへ