• 締切済み

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

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

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1&2です。 テキストボックスが”図形描画”を使っていると、 MsgBox ActiveSheet.TextBoxes("Text Box 1").Text こんな感じです。 コントロールツールボックスなら#2の方法です。 テキストボックスとボタンが何を使っているのか?で変わってきますよ。

tomo0823
質問者

お礼

Private Sub CommandButton1_Click() Selection.AutoFilter Field:=1, Criteria1:="=*" & TextBox1 & "*", Operator:=xlOr End Sub 上記のプログラムで思うように動きました! 何度も何度もすみませんでした。 ありがとうございました!

tomo0823
質問者

補足

何度も何度もありがとうごじます。 Private Sub CommandButton1_Click() MsgBox Me.TextBox1.Text Selection.AutoFilter Field:=1, Criteria1:="=**", Operator:=xlAnd Selection.AutoFilter Field:=1, Criteria1:="TextBox1" End Sub 上記のようなスクリプトなんですが、テキストボックスの内容を 抽出できません・・・ これで検索ボタンを押すと、抽出項目なしで何も抽出されません。。 どうしたら良いのでしょうか・・・

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

#1です。 コントロールツールボックスでTextBox1とコマンドボタン1を貼付けて、 ボタンを押したらテキストボックスの値を表示するだけなら、 Private Sub CommandButton1_Click() MsgBox Me.TextBox1.Text End Sub でしょうか。 あとはこの値をフィルタの抽出条件に入れるだけです。

tomo0823
質問者

お礼

いろいろいじってますが、思うように機能してくれません。。 Private Sub CommandButton1_Click() MsgBox Me.TextBox1.Text Range("E2") = TextBox1 Selection.AutoFilter Field:=1, Criteria1:="=**", Operator:=xlOr Range("Book1").AutoFilter Field:=1, Criteria1:="textbox1" End Sub 現在上記のようなプログラムなんですが、 オートフィルタの抽出はできているみたいなんですが、 RANGEメソッドは失敗しましたとエラーがでます。 それと、E2というセルにテキストボックスの内容をコピーし オートフィルタの抽出条件(用語)にしています。 直接テキストボックス内に入力した文字をオートフィルタかけたい のですが・・・・

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>テキストボックスと検索ボタン フォームなのかコントロールツールボックスなのかにもよりますし、取り敢えず エラーになっているコードを提示してみては如何でしょうか。 セルに検索値を入れてマクロを実行させれば、抽出するコードは作成できるのでしょうか?

tomo0823
質問者

お礼

ありがとうざいます。 抽出もできているのかどうなのか よくわからないんですが、 マクロの記録で特定文字のオートフィルタ抽出しかできてません。。  テキストボックス  ボタン ――――――――――――――――――――――――――――― 用語    説明               分野 ○○    ○○○○             ○○○ このような構成です。

関連するQ&A

  • excel 2003 オートフィルタ!

    excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

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

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

  • オートフィルタ後の、マクロでの値の参照に関して

    オートフィルタ後の、マクロでの値の参照に関して 下記を悩んでいます。教えて頂ければ幸いです。 マクロで、あるデーター表から、オートフィルタを使用し、必要なデーターを 抽出し、マクロ内に戻し、その後の計算で使用したいと考えています。 A列、B列、C列にそれぞれ、検索条件を指定し、オートフィルタ後、下記のような状態になります。 参照したい値は、D列になります。 下記のような例では、2.5と2.7の値をマクロ内に戻したいです。 (例:オートフィルタ後) 1行  A▼  B▼  C▼  D 16行 **  **   **  2.5   20行 **  **   **  2.7 *2~15行目は見えなくなっています。 *17~19行目は見えなくなっています。 セルを参照し、マクロ内に戻すには、どのような構文(マクロ)の記述が必要でしょうか? 【備考】 ・上記の例では、セルはD16、D20となりますが、抽出条件によっては、行番号が変わってしまいます。 ・抽出後のD列のデーター数は、常に2つです。 よろしくお願いします。

  • エクセル オートフィルター

    オートフィルターについて教えて下さい。 同じシート内で、独立した複数のオートフィルターを用いることは出来ますか。下に示すような場合にAとB列に独立してオートフィルターを設定して、果物を抽出して、CとD列には野菜だけを抽出する。みたいなイメージです。オートフィルターやマクロを用いないやり方で他のやり方でもできる場合は教えて下さい。    A    B      C    D 1  りんご 果物   りんご  果物 2 キャベツ 野菜  キャベツ  野菜 3  イチゴ 果物   イチゴ  果物

  • エクセル-マクロ-オートフィルタ

    エクセルのマクロで、 オートフィルタでデータを抽出する場合、 引数Criterial,Criterial2で文字列を指定しますが、 Criterial3…とできません。 ・3個以上抽出したい場合 ・「*~」以外を抽出したい場合 がわかりません。 教えて下さいmm。

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

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

    エクセル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列に限定されてしまいます。 シート状のすべてで検索することはできるでしょうか。

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

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

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

  • Excelのオートフィルタのことで質問です。

    Excelのオートフィルタのことで質問です。 リストは、A列(月)、B列(名前)、C列(売上)、D列(%)です。年度集計でオートフィルタを使い、名前を重複させずに抽出させ、かつ%順に並べかえたいです。 ちなみに重複する名前の売上と%は合計させて並べ変えたいのですが、うまくできません。 マクロは使ったことがないのですが、どのようにしたらいいでしょうか?

専門家に質問してみよう