• ベストアンサー

EXCEL2003の検索方法

お世話になります。 業務でExcel2003でデータベースを作成しており、データベース内を検索しながら、ないものについては新規入力をしています。 検索は普通にExcelの検索機能を使っていますが、先頭一致の検索ではないため使い辛く、また、いちいち検索ボタンを押さなくても一文字入力するごとに、カーソルがジャンプしてくれるといいなと思います。 例えば、「ABC」を検索するときに、「A」を入力すると先頭が「A」で始まるデータの最初のセルにジャンプする感じで、 1行目 AAAA 2行目 AABB 3行目 ABBB 4行目 ABCA 上記の場合なら、「A」と入力すると1行目にジャンプし、「AB」になると3行目へ。「ABC」になると4行目になって欲しいのです。 また、Excelの検索機能と同じように、検索画面は出ている状態で、データベースもスクロールできたりセル内を修正できるといいのですが… ネットで検索してはみたのですが、なかなか思うようなのが検索できず、 質問させて頂きました。よいフリーソフトや、参考サイトがありましたらご教授下さい。よろしくお願いします。

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

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

#3です。 ユーザーフォームに Private Sub TextBox1_Change() Dim r As Range ' シート名注意↓ Set r = Worksheets("Sheet1").Range("D:D").Find(What:=TextBox1.Text & "*", _ LookIn:=xlValues, LookAt:=xlWhole) If r Is Nothing Then Exit Sub r.Select End Sub Private Sub UserForm_Terminate() Unload UserForm1 End Sub 標準モジュールに Sub try() UserForm1.Show vbModeless End Sub としたらマクロ【try】を実行。 と言う感じを考えました。 ⇒シート名は適宜修正願います。

nanami0310
質問者

お礼

すごいです!完璧です!!! ありがとうございました! また、何か変更点等ありましたらご相談させて下さい。 本当にありがとうございました。

その他の回答 (3)

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

ユーザーフォームにテキストボックスを作り、テキストボックスチェンジイベントで 検索をするとか? ユーザー フォームをモードレスで表示させておけば、セル選択・修正等もできますけど。 そう言うのとは違うのかな。

nanami0310
質問者

補足

VBAは初心者なのでテキストボックスチェンジイベントの意味を理解するのに手間どってしまい、遅くなりました。申し訳ありません。 イメージはこれです! 申し訳ありませんが、もう少しお付き合い下さい。 調べた検索ページ(http://www.moug.net/tech/exvba/0090008.htm)から Private Sub TextBox1_Change() Dim Mynumber As String Dim FoundCell As Range Columns("D:D").Select (←D列のみの検索でOKです) Mynumber = UserForm1.TextBox1.Text Set FoundCell = Cells.Find(What:=Mynumber, After:=ActiveCell, _ LookIn:=xlFormulas, LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, _ MatchByte:=False) If FoundCell Is Nothing = False Then FoundCell.Select End If End Sub をコピーして作ってみましたが、これだと「AB」と入力すると先頭一致ではなく「AAB」も検索してしまうようです。これを先頭一致にしたいのと、一致するセルがなくなるとセル「A1」に戻ってしまうのですが、最後に検索されたセルで止まらせることは可能でしょうか?また、 UserForm1.Show vbModeless は、どこに記入すればよいでしょうか? 宜しくお願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

>検索は普通にExcelの検索機能を使っていますが、 >先頭一致の検索ではないため使い辛く これ以上のものを作るのは容易ではありませんよ。 ワイルドカードを使います。 「検索する文字列(N)」を、AB* として、検索ダイアログボックスのオプションで 「セル内容が完全に同一であるものを検索する」 に設定すれば「先頭一致」で検索できます。 >また、いちいち検索ボタンを押さなくても一文字入力するごとに、 >カーソルがジャンプしてくれるといいなと思います。 デフォルトで「次を検索」ボタンがアクティブになっています。 Enter で「次を検索(F)」が実行され、検索されたセルにジャンプし選択表示されます。 アクセスキーを使う方法もあります。 ボタン名の後に、かっこ付けのアルファベットが記されています。 これがアクセスキーです。 「次を検索(F)」は、AltキーとFキーを同時押しすれば実行されます。 このように、編集メニューの「検索」ダイアログボックスは、すべての機能がキー操作可能です。 念のため、ご存知かもしれませんが、Ctrl+F でダイアログボックスが表示されます。 アクセスキー以外に、Tab キー操作で、ダイアログボックスのコントロール間を移動することができます。 ボタンを押すのは、Enter です。 「すべて検索」すれば、検索結果がダイアログボックスの下部にリストボックスが表示され、検索結果が一覧表示されます。 リストボクスがアクティブな状態で、矢印キーでリスト内を移動し、リストを個別に選択できます。 同時に、該当セルにジャンプ、スクロールし、選択されたセルが表示されます。 因みに、Ctrl+A と操作すれば「すべて検索」されたセルが全選択されます。

nanami0310
質問者

お礼

やはりVBAが使えないと難しいですよね。。。 昔のExcelには先頭一致を選択する項目があったのに…と思っていたのですが、「完全一致」の意味を理解していませんでしたし、アクセスキーの意味もようやく分かりました。 ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

オートフィルターの機能を利用したマクロはどうでしょう。 データのシートにはオートフィルターを設定しておきます。 データ=>フィルター=>オートフィルター で項目の行に▽を表示した状態にしておきます。 シートの上部分にでもボタンを配置します (表示=>ツールバー=>フォームをクリック、ボタンを選択して配置) ボタンを右クリックして、マクロの新規作成 Sub ボタン1_Click() Myname = InputBox("抽出文字は") Selection.AutoFilter Field:=1, Criteria1:="=" & Myname & "*", Operator:=xlAnd End Sub となるように、SubとEndSubの間の2行をコピィして閉じてみてください。

nanami0310
質問者

お礼

お返事遅くなり申し訳ありません。 コード表記ありがとうございます。今、動作確認しました。 検索はこれでかけやすくなりました!参考にさせて頂きます。 ありがとうございました。

関連するQ&A

  • (Excel VBA)困っています・・・orz

    エクセルを使うとある業務でマクロを組み、最適化を図ろうと試みているのですが 気がつけば高度な領域に突入していまして、僕みたいなレベルじゃ全然???な状況になってしまいました。 まず A列の1行目から任意の行に(10行までしかなかったり、1000行まであったりとランダムにあるとする)、任意の文字列(ABCなど)があるとします。 それからオートフィルタを使い、A列からある任意の文字列(ABCなど)を検索条件にしてデータを抽出します。 抽出されたデータベースのA列には検索条件にある「ABC」が任意の行まであり、その抽出されたデーターベースのD列に今度は「XYZ」とという文字列を 抽出された分の最終行まで割り振る・・・ つまりA列《ABC》で検索され抽出されたデータのD列には《XYZ》が自動に入力される もし、検索条件(ABC)で抽出されたデータが「0」件だった場合は、D列には何もせず、次の検索条件に進む・・・ というものをマクロで組みたいのですがどうやったらよいのでしょうか?? 何卒、ご教授お願い致します。

  • データ検索

    エクセル2003VBAの質問です。 AシートにAデータベースがあります。 そのデータベースには一つのセルに、日にちと時間が入力されています。(例 2008/10/07/ 16:29) BシートにもBデータベースがあります。 Aシートの先程のセル(日にちと時間)を、Bシートで検索したいです。 しかし、このBシートには、Aシートのセルが一致しないものもあります。 一致すれば、Aシートの先程のセルとAシートに入力されている、他の項目をCシートにコピーしたいです。 一致しなければ、そのデータベースは無視して、Aシートに入力されている次のデータ(次の行)を検索したいです。 どうすれば良いでしょうか? よろしくお願いします。

  • EXCELで、『検索』をやりやすく!

    行が400あるファイルなのですが、簡単な検索の仕方を 探してます。 いつも 『ctrl+F』でウィンドを起動して入力するのですが、 例えば、何処かのセルに検索できる関数とかは無いのでしょうか? また、マクロの設定などで何処かのセルに入力するとその行まで ジャンプできるなどの便利な機能は無いのでしょうか? 宜しくお願い致します。

  • エクセル 文字列検索と検索した文字列が含まれるセルへのジャンプ

    エクセル教えてください。 VBAは使ったことがありません。 現在Q&Aを作っています。 かなりボリュームが増えてしまったので、 文字列検索ができるようにしたいと思っています。 そこで、あるセルに調べたい文字列を入力し、 検索ボタンを押すと、その文字列が含まれるセルにジャンプする。 こんな機能は、エクセルでできませんでしょうか? マクロを組んだりすればよいのでしょうか? 教えてくださいー。

  • HYPERLINKで指定セル内容で曖昧検索したい

    エクセルのHYPERLINK関数で検索文字をB2セルにを入力した場合、B2セル+*のようにセル内容で曖昧検索出来ないのでしょうか? 例えばC列にABC123、ABC-123、ABC 123、・・・のどれかで入力されているような場合、検索セルにABCと入れると該当するセルにジャンプするようにしたいのですが。 現在フィルタを使用しているのですが使い勝手が悪く何とかできないかと。 VBAでの対応でも良いのですが当方永遠のVBA初心者なのでご了承くださいませ。 検索値が「該当なし」もあり得ますのでご配慮お願いします。

  • 『EXCEL』で縦列と横列を置換するには?

    EXCELで表などを作ろうとするとき、例えば、1行目から10行目(セルA1~A10)まで各セルに「1~10」の数字を入力し、A1~J1列に「A~J」の文字を各セルに入力するとします。これらの縦列と横列に入力したデータをそっくり置換して入れ替える機能があったと思うのですが、どのようにすればよろしいのでしょうか?ご存知の方、教えて頂けますとありがたいです。

  • データの検索(EXCEL2000)

    おじゃま致します。 シ-ト内のデータの検索をしたいのですが、 [編集]-[検索]でするような検索を以下のように シート内だけで行うにはどうしたらよいでしょうか? シート内のセルA1に検索したいデータを入力したら、 該当データのセルにジャンプさせたいのです。 セル、オブジェクトへマクロ登録はなんとかできますが マクロ自体の作成スキルがありませんので、 どなたか、マクロの作成をお願いできないでしょうか。 また、マクロ以外でできるならアイデアをお願いします。

  • Excelでセルを次の行の先頭の列に移動させる方法を教えてください。

    Excelでセルを次の行の先頭の列に移動させる方法があれば教えてください。 例えば、A1、B1、C1と順に入力し、C1のセルでEnterキーを押すと次の行の先頭列A2に入力セルが移動されるといった場合です。

  • ピボットテーブル 操作について

    エクセル2010上に、次のような表があります。 コード 店舗名   月  A君 Bさん AABB ●●商店 10月 5   50 AABB ●●商店 11月 10  60 AABB ●●商店 12月 10  70 AABC ●●商店 10月 5  30 AABC ●●商店 11月 10  20 AABC ●●商店 12月 15  20 ABCA ●▲商店 10月 5   50 ABCA ●▲商店 11月 10  60 ABCA ●▲商店 12月 10  70  AABB ●▲商店 10月 50  10 AABB ●▲商店 11月 50  20 AABB ●▲商店 12月 60  30 これをピボットテーブルを利用して次のように並び替えたいと思います。         10月                11月         ●●商店 ●▲商店 ・・・   ●●商店 ●▲商店 AABB A君  5    50     ・・・    10   50 AABB Bさん 50   10     ・・・    60   10 AABC A君  5    0     ・・・    10   0 AABC Bさん 30   0     ・・・    20   0 しかし、A君・Bさんをコードの右に持ってくることがうまく行きません。 どなたか、アドバイスいただけないでしょうか。

  • ExcelからAccessデータを検索するマクロ

    ExcelのA1セルにある値をAccessのデータベース (ファイル名:abc.mdb、テーブル名:Tbl_a)の フィールド1から検索し、対応するレコードの フィールド2の値をExcelのB1セルに書き込む というマクロはどのように書けばよいのでしょうか? Excel, Accessともに2000です。 よろしくご教授お願いします。

専門家に質問してみよう