• ベストアンサー

Excelで文字を入力と自動的にフィルタをかけたい

お世話になります。 A1~A100に文字が入力されています。 ある場所で、フィルタをかけたい文字を入力すると自動的にフィルタが 掛かるようにしたいのです。 ※フィルタの対象は複数 ※フィルタをかけたい文字が都度かわるので、毎回フィルタの機能を使うのは面倒なため、フィルタの機能は× フリーソフト、マクロ(できれば実装まで)でも結構ですので、何卒よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

とりあえず、質問中の矛盾を指摘させていただきますね。 > ※フィルタをかけたい文字が都度かわるので、 > 毎回フィルタの機能を使うのは面倒なため、フィルタの機能は× のであれば、 > 自動的にフィルタが掛かるようにしたい 不可能です。 フィルタの機能を使わないでフィルタをかけるのは、 いかにエクセルと言えど、マクロを使うと言えど、無理なものは無理です。 だから、回答がつかないのです。 さてさて現状の確認ですが、 横に項目がいくつか並んでいて、縦にデータ行が並んでいる、 いわゆる一般的なエクセルの表で、 このある項目に対してフィルタを掛けたい、と言うイメージで良いですね。 これを前提に話を進めます。 例えば、データ表がA3:D50の範囲に用意されていて、 キー項目列から抽出したい文字列をB1セルに入力しました。 この文字列を基にA列にフィルタを掛けたいものとします。 そうすると、以下のコード Sub FilSet()   If Range("A3").AutoFilter = False Then     Range("A3").AutoFilter   End If   Range("$A$3:$D$50").AutoFilter Field:=1, Criteria1:=Range("B1").Value End Sub これを実行すると、B1の文字列(値)に従ってA列にフィルタを掛けます。 フィルタを解除する機能も必要でしょう。 それは以下のコード。 Sub FilReset()   If Range("A3").AutoFilter = True Then     Range("A3").AutoFilter   End If End Sub これでフィルタを解除できます。 これらを標準モジュールやブックモジュール、シートモジュールに貼り付けて、 図のようにボタンを作っておくと便利と思います。 このB1セルに入力規則→リストを設定しておけば ドロップダウンから選択→フィルタの一連の動作をマウスで行う事も可能でしょう。 どちらにしても、フィルタの処理をしたいなら マクロを使うにしてもフィルタ機能を使わないと実行できません。 なお、マクロの設定方法は別途お調べください。 Webで検索すると懇切丁寧に解説しているサイトがゴロゴロしていますので。

関連するQ&A