• ベストアンサー

エクセルで検索窓のようなものを作る

エクセルのシートにテキストボックスとコマンドボタンを配置してシート上のデータを検索することは可能でしょうか?今現在はB列に、複数の文字データが入力してあるので、オートフィルタのオプションから「を含む」で検索してます。 イメージとしては、オートフィルタのオプションから「を含む」を選んでから検索しなくても予めシートに用意してあるテキストボックスに検索したい文字を入れてボタンを押すと、オートフィルタで検索したときと同じような結果が得られるようにしたいと思ってます。 例)    A    B    C     -------------- 1     血液型      2      A 3      B 4      O 5      AB 上のような表があったとして、テキストボックスにAと入力してボタンを押すとB2とB5が表示されるようにしたと思ってます。いい方法があればご教示願います。

  • sreds
  • お礼率76% (13/17)

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

  • ベストアンサー
回答No.1

シートにテキストボックス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です。 機能は「を含む」です。つまり文字列のどこにでもテキストボックスに入力した文字が含む行を表示します。 ではでは

sreds
質問者

お礼

ご回答ありがとうございます!いい感じにできました。しかしすべての列ではなくB列だけを検索したいときはどうすればいいでしょうか?

その他の回答 (2)

  • wein1982
  • ベストアンサー率25% (1/4)
回答No.3

例の場合ですと、 検索する列の見出しと抽出条件(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 多少わかりにくいと思うので不明点があればまた質問してください。

sreds
質問者

お礼

ご回答ありがとうございます。教えられたとおりにやってみたいと思います。親切にご教示いただきありがとうございました。

回答No.2

#1です。 > B列だけを検索したいときはどうすればいいでしょうか B列だけを検索するようにしていますが・・・ Field:=2 がB列を指定しています。 ん?フィルタの三角が全列に表示されるから? これはオートフィルタの機能を利用しているから仕方が無いです。

sreds
質問者

お礼

そうなんですね!知識不足で申し訳ありません。でもこれで十分です!活用させていただきます。ありがとうございました!

関連するQ&A

  • エクセルマクロで検索ボックスを作成する

    エクセル2010のマクロで検索ボックスを作成したいと考えています。 質問No.4072490を参照して作成しました。 ////////////////////////////////////////////////////////// 質問 エクセルのシートにテキストボックスとコマンドボタンを配置してシート上のデータを検索することは可能でしょうか?今現在はB列に、複数の文字データが入力してあるので、オートフィルタのオプションから「を含む」で検索してます。 イメージとしては、オートフィルタのオプションから「を含む」を選んでから検索しなくても予めシートに用意してあるテキストボックスに検索したい文字を入れてボタンを押すと、オートフィルタで検索したときと同じような結果が得られるようにしたいと思ってます。 例)  A    B    C     -------------- 1     血液型      2      A 3      B 4      O 5      AB 上のような表があったとして、テキストボックスにAと入力してボタンを押すとB2とB5が表示されるようにしたと思ってます。いい方法があればご教示願います。 回答 シートにテキストボックス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回目から検索ができません。 どこか変更した方が良いでしょうか。 追加でもう一つ質問です。 検索範囲がB列に限定されてしまいます。 シート状のすべてで検索することはできるでしょうか。

  • エクセル 検索マクロ オートフィルタでする方法

    はじめまして。 エクセルで上部にテキストボックスと検索ボタンを作り、 検索ボタンを押したらテキストボックスの内容を 検索し、オートフィルタで抽出するマクロを作りたいのですが、 いくら頑張ってもエラー等で作れません。 どなたかご教授ください。 A列に用語、B列に用語の説明、C列に用語の分野というシンプルな 用語集というデータです。 主にA列の用語をテキストボックスに入力し検索ボタンで検索。 部分一致でも検索され、一致するものを オートフィルタ同様に抽出するというマクロです。 結果がなければボアアップウインドウでありませんっとか出るようにしたいです。 何卒よろしくお願いいたします。

  • Excelのワークシート上に検索窓とボタンを作りたい

    Excelのワークシート上に検索窓とボタンを作ろうとしています。 コントロールツールボックスからテキストボックスとコマンドボタンを1つずつ配置しました。ボタンを押すと検索用マクロが動作してテキストボックスに入力した文字を別のシート上から検索する仕組みです。計画どおりの動作をするようになったのですが、使い勝手についていくつか不満があるので解消したいのです。 1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。 2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。 3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。 自分でも色々調べてみたのですが、どうにも分かりません。よろしくお願いします。

  • エクセルで3つの条件で検索したい場合

    エクセルで3つの条件で検索したい場合、どうすればいいですか? オートフィルター オプション 抽出条件の指定 「  」を含む 「  」を含む で、3つ目の条件を入れる項目がありません。 例えばシートに 列 A B C D E F とあり、 「A」を含む 「B」を含む 「C」を含む という三つの条件で抽出したい場合、どのようにオートフィルター オプションを使えばいいのでしょうか? ▼マークのフィルターをクリックして 外したい項目のチェックボックスを外せば、A,B,Cを抽出できることはわかってますが 今回は例なだけで、実際はもっと複雑なデータなので、 「オートフィルター オプション」「抽出条件の指定」のやり方が知りたいです。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • エクセルシートから検索

    カテゴリー違いかもしれませんが エクセルVBAのユーザーフォームを使用して テキストボックスへ入力したデータを指定のシートから検索し、 同じユーザーフォームへ希望のデータ(検索値の同行)を表示させるということはできるのでしょうか。 また、入力した文字と一致したもの全てをということも出来るでしょうか。 例 Aのテキストボックスに、検索したい文字を入れる 一致したデータ全ての行の情報を B以降のフォームへ表示させる 説明がわかりにくいとは思いますが 宜しくお願い致します。

  • ご指導お願い致します。

    データ整理で悩んでるんですが、どなたかご提案願います。 VBAは初心者なのでご指導も願います。 テキストボックスで記入する欄が8個ほどあります。 記録用シートにコマンドボタンで転送させます。その記録用シートには    A       B       C       D       F    1 テキスト1 テキスト2  テキスト3  テキスト4  テキスト8 2                         テキスト5 3                         テキスト6 3                         テキスト7 となっています。 その後登録ごとに同じような内容が転送されるようます。 転送・記録の手順は整いましたが、記録用シートで管理・検索もしようと思ったらどうしたらいいのかわからなくなってきました。 検索するときはオートフィルタなどでも良いと思いましたが、テキスト1でフィルタしてもD列にあるテキスト5~7は検索にひっかからないな・・・と思いまして。 本当は最初の転送させる前のテキストボックスにクリックなどしたら表示されたらいいんですが。説明不足だと思いますが、なにとぞご教授願います。 尚最初の転送前のシートには下記のようなフォームであります。 オプションボタン1(転送先シートを決定するため) オプションボタン2    ・    ・    ・ オプションボタン6 テキストボックス1(先ほどの転送前のテキストボックス) テキストボックス2 テキストボックス3 テキストボックス4 テキストボックス5 テキストボックス6 テキストボックス7 テキストボックス8 コマンドボタン1(クリックしたらオプションボタン別にシートを分別しているので、選択シートにテキストボックスが転送されるマクロを登録)

  • Excelユーザーフォームでのデータ検索

    初心者の質問で申し訳ございません。 ユーザーフォームを利用して検索ボタンを作ろうと考えています。 ユーザーフォームでテキストボックスを2個と コマンドボタン1個を作成し、 テキストボックス1に検索したい氏名を入力して コマンドボタンを押すと、 ワークシート(ワークシート名、データ)に作成されたデータのD列から 一致するものを検索し、 一致したデータのA列にある「番号」をテキストボックス2、 表示する。 というマクロが書けず困っています。 よろしくお願いします。

  • Excelユーザーフォームでのデータ検索

    現在Excelマクロの勉強中ですが、ユーザーフォームでテキストボックスを4個とコマンドボタン1個を作成し、テキストボックス1にコードを入力してコマンドボタンを押すと、ワークシート(ワークシート名、住所録)に作成されたデータのA列からコードを検索(データは2行目から始まる)し、一致したデータのB列にある「名前」をテキストボックス2、C列の「住所」をテキストボックス3、D列の「電話番号」をテキストボックス4に表示する。 というマクロが書けず困っています。 わかる方教えてください。

  • エクセルのマクロで・・・再

    エクセルの表で、日付の列を検索したいのですが・・・。 例えば A列に名前 B列に誕生日があるとして、ある期間の誕生日の人を検索したい。とします。 普通にやるならデータ→フィルタ→オートフィルタ→条件をいれて・・・・。となると思うんですが、これをボタン一つで、できるようにしたいんです。 さらに、データがシート1にあるとしたら、条件はシート2のA2とB2に入力した日の間となるようにしたいのです。 エクセルは2000を使用しています。 以前にも同じ様な内容で教えて頂いたのですが、条件の入れ方が少し違いまして・・・。 ごめんなさい。どなたか教えて下さい。

専門家に質問してみよう