概要
エクセルの表でキーワードの入った行列のみを表示させたい時、データタブにあるフィルターという機能を使って表示させることができる。しかし、表をいじられるとまずい場合がある。(しかも修正を忘れた状態で保存されたり…。)なので一部の人だけが管理し、かつ他の方が安心して検索できるように一例を挙げてみたい。
特徴
今回使用したのは"Advanced Filter"というフィルタオプションである。
- 元データのある表を書き換えないため、データが誤記入されるのを防ぐ
- 通常のフィルター抽出を行うと、元のデータに戻すのにチェックを外さなければならない。一方で別表で検索シートを作成すると、ひと手間がなくなる。
- AND検索、OR検索にくせがある。
Advanced Filterを用いて検索を行う
まず"Advanced Filter"が何なのかを説明する。これはフィルターのオプション設定をVBAで操作するというものである。面白いのは、通常転記を行うとあるワークシートの選択範囲に上書きされてしまうので、例えば残っていたデータに新しいデータがかぶってしまうことがあり混乱することがある。しかし、このフィルターは上書きはしないのでそのような心配は無用である。
検索に必要なもの
- ラベル Ex.オレンジ(果物)、にんじん(野菜) 等の果物、野菜にあたる名称
- キーワード(検索用)*1
- 別シートに表を作成する
- マクロを実行させるボタンの作成 ※開発タブでフォームコントロールを挿入、もしくは図形にマクロを登録させる
注意点
・キーワード検索の単語の配置の仕方
この検索ではOR検索かAND検索を指定することができる。要するにいろんなオレンジの種類があった時、AND検索であれば「300円以上で小サイズのオレンジ」をキーワードに設定してやればひっかかる。一方でOR検索であれば「300円以上のオレンジもしくは小サイズのオレンジ」がひっかかる。ここでポイントなのはキーワードの配置である。AND検索の場合は一行に配置されたラベルに対して、検索ワードは一列に並べなければならないが、OR検索の場合は一行ずれて配置しなければならない。つまり、AND検索で2行2列必要なところOR検索では3行2列必要になる。
最後に
上記の図1、2を基本動作としてもっと複雑な抽出を行うことができる。今回は同じシート内で行っているが、別シートでも同じようにできる。なので誤ってデータを消してしまった…ということが防げ、とても便利な機能である。
*1:※データ規則の入力でリストを作成すると良い