• 締切済み

検索結果をセルに表示させるマクロ

こんにちは。 エクセルのマクロ初心者です。 シート1に作ったあるリストから、シート2のあるセルにキーワードを入力すると、隣のセルに検索結果を表示させるマクロと作りたいのですが…。 エクセルの検索機能を使って、キーワードを入力し、次を検索をクリックすると、シート1のリストの中の部分的に合致するセルをカーソルは選択しますよね? その選択したセル内容をシート2のセルに表示させる方法がわかりません…。 アドバイスいただけないでしょうか。

みんなの回答

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

質問内容を取り違えていたらごめんなさい。 検索ダイアログ http://homepage3.nifty.com/boole/dia/act37.htm 検索ダイアログに検索したい文字列を入力し「次を検索」を押すと、 シート1内でセルが移動する。 その移動に合わせてシート2へ値を転記する。 と言った感じに受け取れたのですが。 これ以上は経験不足のため回答には至りませんでした。 的はずれですかね。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

#1,#2で満足な回答かもしれません。 しかし質問を読むと、したいことの詳細がはっきりしません。 >シート1に作ったあるリストからシート2のあるセルにキーワードを入力すると 入力規則のリストをシート1に作って(名前定義など使って)、Sheet2のドロップダウンリストから。1つを選択した結果、 あるセルに値(検索後)がセットされるのかな。 しかし考えてみてください、こんなことをこの質問に書く必要ないでしょう。手入力しようが、リストから選択しようが、VBAでセットしようが、関係ない(セルの値の来歴同質性)。質問を複雑そうに見せるだけ。 =>もう一度読み直すと、検索対象がシート1にあるということらしい。紛らわしい。リストというよりシート1のある列の(検索)データと表現すればよい。 >エクセルの検索機能を使って、キーワードを入力し これも読み返しましたか。 >エクセルの検索機能を使って、その結果検索?キーワードをするってどうするの。 「キーワードを入力し、エクセルの検索機能を使って、」の意味では。語句の並びの前後は大事ですよ。 >シート1のリストの中の部分的に合致するセルをカーソルは選択しますよね 質問者が勝手に言っているだけでは。 全文字一致の検索する方式もあります。それを知らないだけでは。 >選択したセル内容をシート2のセルに表示させる方法がわかりません Find.Selectでもやれば、次に Selection.Valueででも値が取れるのでは ----- http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html http://oshiete1.goo.ne.jp/qa2358126.html http://www.k1simplify.com/vba/tipsleaf/leaf51.html ---- 例データ Sheet1 東京都 山田 大阪府 大下 鹿児島県 木村 大阪府 市川 東京都 近藤 鹿児島県 鈴木 福岡県 田中 鹿児島県 川村 コード http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html を一部改変させてもらった。 Sub Find_01() Worksheets("Sheet2").Cells.Clear Dim c As Object Dim myKey As String, fAddress As String k = 1 myKey = InputBox("県名=") With Worksheets(1).Range("A1:A30") Set c = .Find(What:=myKey, LookIn:=xlValues, lookat:=xlWhole, _ SearchOrder:=xlByColumns, MatchByte:=False) If Not c Is Nothing Then fAddress = c.Address Do c.Interior.ColorIndex = 4 '明るい緑 Worksheets("Sheet2").Cells(k, "A") = c.Value Worksheets("Sheet2").Cells(k, "B") = c.Offset(0, 1).Value k = k + 1 Set c = .FindNext(c) If c.Address = fAddress Then Exit Do Loop End If End With End Sub ーー 実行して、「鹿児島県」と応答して Sheet2は 鹿児島県 木村 鹿児島県 鈴木 鹿児島県 川村 ==== こういう風に模擬実例を書けば判りやすいのです。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

シート1のリストに部分一致の値が複数ある場合はどうすればよいのですか? 最初に見つかった値だけを転記すればよいのでしょうか? またマクロを実行するのは手動ですか? それとも検索キーワードが入力されたセルが変更されたときですか? 以下のサンプルはシート2のA1セルに入力してある検索キーワードでシート1を検索し、最初に見つかったセルの値をB1に転記するものです。 シート2のA1セルが変更されたらマクロが実行されるようにしますので、マクロはシート2の「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けてください Private Sub Worksheet_Change(ByVal Target As Range) Const adr As String = "A1" '検索キーワードを入力するセル Dim rng, trg As Range   Set rng = Intersect(Target, Range(adr))   If Not rng Is Nothing Then     Set trg = Sheets("Sheet1").Cells.Find(what:=Range(adr).Value, _       LookIn:=xlValues, lookat:=xlPart)     If trg Is Nothing Then       Range(adr).Offset(0, 1).Value = "該当なし"     Else       Range(adr).Offset(0, 1).Value = trg.Value     End If   End If End Sub 複数の値がヒットする可能性があるならFindNextメソッドで「次を検索」してシート2に転記することも可能ですが、そこまでは書きません。ヘルプを見て試してみてください

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

Sub Macro1() ' Macro1 Macro ' マクロ記録日 : 2008/1/12 ユーザー名 : Pbforce Sheets("Sheet1").Select Cells.Find(What:=Sheets("Sheet2").Range("A1"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate Selection.Copy Sheets("Sheet2").Select Range("B1").Select ActiveSheet.Paste End Sub マクロの記録と言う機能を試してください。

blue0623
質問者

補足

早速ありがとうございます。 つくりたかったものがつくれました! 補足で質問なんですが、回答いただいたマクロでボタンをつくると、複数該当した場合、何度押しても次を検索してくれます。 これを一度だけというふうにするにはどうすればいいでしょうか?

関連するQ&A

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

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

  • マクロ 検索について

    こんにちは。マクロでの質問ですが、 【大学名リスト】というシートで作成したリストから検索してきたものを【検索ボタン】というシートのセルにコピペするマクロをボタンに登録しました。何度押しても検索してくれてしまうのですが、このボタンに登録したのは1回だけ実行して、もう一つのマクロで次を検索してくれるように作りたいのですが… Sub Macro1() ' ' Macro1 Macro ' ' Sheets("A.【大学名リスト】").Select Cells.Find(What:=Sheets("B.【検索ボタン】").Range("C8"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Selection.Copy Sheets("B.【検索ボタン】").Select Range("E8").Select ActiveSheet.Paste End Sub 数値の検索だと1回だけで止まってくれるのですが、数式にすると何回も可能になってしまうのはなぜなのでしょうか。 あと、実行すると【大学名リスト】のシートで作成したリストから、【検索ボタン】のシートのあるセルにキーワードを入力すると、隣のセルに5つの候補を表示させるマクロも教えていただきたいです。

  • EXCEL・・検索ボタンをクリックするとマクロが実行されるようにしたい

    EXCELでSheet1にデータを入力、Sheet2に検索結果抽出フォームを作成してあります。セルにキーワードを入力しマクロの実行でデータの抽出ができるように出来上がっています。 そこで、セルに入力→ツールバーからマクロの実行という作業を検索ボタンを作成し一発で検索ができるようにしたいのです。 キーワードの入力セルはC:3です。 よろしくお願いします。

  • セルの内容と同じ内容を検索する

    セルの内容と同じ内容を検索する EXCEL2003です。 SHEET1のA列セルをクリックし、参照先の文字が同じであれば、順々にジャンプする様なマクロを教えていただきたく。 現状の構成は次の通り。 LISTシートにリスト、SHEET1はそのリストを参照して文字列を表示させる構成になっています。 SHEET1のD列とLISTシートのI列に参照させるキー(IN_000の様なアドレス)があります。 LISTシートの分散したA列セルに同じ文字列が登録されています。 下記が、サンプルイメージです。 SHEET1 A1                            D1     =INDEX(LIST!A:A,MATCH(D1,LIST!I:I,0))   IN_000 LIST A1                         D1     特殊                        IN_000 A30 特殊                        IN_030 A200 特殊                        IN_200  つまりSHEET1のA1,A30,A200は表示上、特殊と表示されています。 分散して表示されるので、A1をクリックしたらA30、A30をクリックしたらA200、A200をクリックしたらA1に戻るという検索動作をさせたいのです。 尚、A列には空白行も存在します。最終行まで検索しA1に戻るというジャンプをしたいです。 SHEET1のA列には参照式(=INDEX(LIST!A:A,MATCH(D1,LIST!I:I,0))という参照式が入っていますが、 参照先(LISTシートのAセル内容)が空欄であれば、SHEET1のAセルをクリックしても、そのセルのまま動かないという動作も併せてお願いしたく。 クリックしてジャンプ検索するのは、A列限定です。 他のセルには同じ文字列が多数存在し、クリックしたり入力もあります。 ※マクロに関して、初心者なのでベタの回答でお願いできますでしょうか

  • Excelで別シートのセルを選択したら、その隣のセルを表示させたいので

    Excelで別シートのセルを選択したら、その隣のセルを表示させたいのですが、 やり方がわかりません。 このようなリストを作成しました。 ----------------  果物  値段 りんご  50 バナナ  100 パイン  120 ---------------- 別シートのA1(他のセル)に「りんご」と入力したら A2に「50」とを表示させる方法を教えてください。 ちなみに別シートのA1には「果物」で入力規則してあります。 プルダウンで「りんご」を選択したら、 自動的に連動させてA2に「50」といれたいのです。 IFなど検索しましたが、該当するのはみつけられませんでした。 よろしくお願いします。

  • エクセルのあるセルに■表示が出たら、違うシートに移動することがしたい

    私はマクロは全然分からないのでマクロを使わないで 出来るやり方を教えて欲しい 内容は、セルに入力規則のリストで■と□が選択出来るようにしました。 □から■を選択しセル内の表示が■に変わった時点で、ある該当シートに移動したいのですが、そんなこと出来るでしょうか教えて欲しい

  • エクセル2000でのセル検索結果の表示

    エクセル2000でのセル検索結果の表示に関し質問します。 通常では、検索結果は細い枠で囲まれるだけで、視覚的にあまりはっきりしません。 検索前に全セルを選択状態にした後に検索すると、検索されたセルだけが白色表示され見やすくなりますので、私はそうしていますが、一々セルを選択するのは面倒です。 左上を1回クリックするだけですが、それが面倒です。 他人が使用する為にも、検索結果のセルを特別の色で表示するような設定方法はありませんか?        

  • エクセルのセルごとに選択リストをつけるには?

    エクセル(2000)について、質問をさせてください。 セルにカーソルをあてた時、そのセルに入力する項目を選択リストにして、 それを選ぶための▼ボタンが出せるかと思うのですが、 どのようにすればいいでしょうか? 過去に人が作ったのを見ていると、選択リストに表示したい項目が 別シートに並べて書いてあり、そこから取得しているようなのですが・・・。 よろしくお願いいたします。

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

  • エクセルのマクロで検索結果を取り込みたい

    エクセルのマクロを使用して グーグル検索の所定のキーワードを取り込むようにしたのですが 処理としまして、プログラムを起動すると ユーザーフォームが起動して、テキストボックスがあり テキストボックス内に検索したいキーワードを入力して ボタンをクリックしたら メモ帳に自動でキーワードを書き込まれるようにしたいです。 出来れば、検索結果の一番下のほうに 「他のキーワード」と言うのがありまして ダイエットで検索すると 「他のキーワード」が ダイエット日記 ダイエット方法 食べ合わせダイエット 骨盤ダイエット ダイエット レシピ ダイエット 運動 どうぶつダイエット ダイエット ブログ バナナ ダイエット 炭水化物ダイエット といったキーワードが出てくるのを メモ帳に自動で書き出すのと 「他のキーワード」で検索すると そこにも「他のキーワード」がありますので それもメモ帳に書き出すようにしたいです。 1層目の「他のキーワード」を書き出すとこまでは 出来たのですが、2層目の「他のキーワード」を書き出す方法がわかりません。 それと、マクロを書いているエクセルファイルを開いたら 自動でマクロを起動できるように出来ますでしょうか? わかりにくい説明かもしれませんが よろしくお願いいたします。

専門家に質問してみよう