- ベストアンサー
エクセルで検索窓のようなものを作る
エクセルのシートにテキストボックスとコマンドボタンを配置してシート上のデータを検索することは可能でしょうか?今現在はB列に、複数の文字データが入力してあるので、オートフィルタのオプションから「を含む」で検索してます。 イメージとしては、オートフィルタのオプションから「を含む」を選んでから検索しなくても予めシートに用意してあるテキストボックスに検索したい文字を入れてボタンを押すと、オートフィルタで検索したときと同じような結果が得られるようにしたいと思ってます。 例) A B C -------------- 1 血液型 2 A 3 B 4 O 5 AB 上のような表があったとして、テキストボックスにAと入力してボタンを押すとB2とB5が表示されるようにしたと思ってます。いい方法があればご教示願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シートにテキストボックス1個、コマンドボタン2個を配置します。 これは出来ますね。 コマンドボタン1個目は検索ボタン、2個目は解除ボタンです。 ツール→マクロ→Visual Basic Editorを選択して シートに以下のコードを貼り付ける。 ------------------ ここから下 ---------------------- Option Explicit Private Sub CommandButton1_Click() Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:="=*" & TextBox1.Value & "*", Operator:=xlAnd End Sub Private Sub CommandButton2_Click() Selection.AutoFilter End Sub ---------------- ここまで ------------------ エクセル2000です。 機能は「を含む」です。つまり文字列のどこにでもテキストボックスに入力した文字が含む行を表示します。 ではでは
その他の回答 (2)
- wein1982
- ベストアンサー率25% (1/4)
例の場合ですと、 検索する列の見出しと抽出条件(Aを含むで検索する場合は<A>と入力)を作成します。 ↓こんな感じです。 B - <A> A B C -------------- 1 血液型 2 A 3 B 4 O 5 AB この状態でデータ→フィルタ→フィルタオプションでそれぞれの範囲を指定すればB2とB5が抽出されるハズです。 これは条件がいくつも指定できるので便利ですよ。 同じ表を使用してマクロを組むとこんな感じです。なお範囲選択画面でESCキーを押すとフィルタが解除されるようになってます。 Sub AdvancedFilter() Dim mtRange As Range, jkRange As Range On Error GoTo S1 Set mtRange = Application.InputBox("抽出元範囲を選択してください", Type:=8) ActiveCell.Select Set jkRange = Application.InputBox("条件範囲を選択してください", Type:=8) mtRange.AdvancedFilter Action:=xlFilterInPlace, Criteriarange:=jkRange GoTo S2 S1: If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If S2: End Sub 多少わかりにくいと思うので不明点があればまた質問してください。
お礼
ご回答ありがとうございます。教えられたとおりにやってみたいと思います。親切にご教示いただきありがとうございました。
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
#1です。 > B列だけを検索したいときはどうすればいいでしょうか B列だけを検索するようにしていますが・・・ Field:=2 がB列を指定しています。 ん?フィルタの三角が全列に表示されるから? これはオートフィルタの機能を利用しているから仕方が無いです。
お礼
そうなんですね!知識不足で申し訳ありません。でもこれで十分です!活用させていただきます。ありがとうございました!
お礼
ご回答ありがとうございます!いい感じにできました。しかしすべての列ではなくB列だけを検索したいときはどうすればいいでしょうか?