セルの内容と同じ内容を検索するマクロ

このQ&Aのポイント
  • EXCEL2003で、SHEET1のA列セルをクリックし、参照先の文字が同じであれば、順々にジャンプする様なマクロを教えていただきたいです。
  • SHEET1のA列には参照式が入っていますが、参照先が空欄であれば、Aセルをクリックしてもそのまま動かないようにしたいです。
  • 他のセルには同じ文字列が多数存在し、クリックや入力もあるため、クリックしてジャンプ検索するのはA列限定です。最終行まで検索しA1に戻るというジャンプをしたいです。
回答を見る
  • ベストアンサー

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

セルの内容と同じ内容を検索する 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列限定です。 他のセルには同じ文字列が多数存在し、クリックしたり入力もあります。 ※マクロに関して、初心者なのでベタの回答でお願いできますでしょうか

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

クリックでというのは無理なのでダブルクリックにしました。 マクロの設定の仕方から説明しておきます。該当シートを開いてALT+F11を押すとVBEが開きますので、左の窓の該当シート名の書かれたところを右クリックすると右側に白い窓が出現しますのでそこに以下のコードをコピーしてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Err GoTo Myerr: Dim MyRange As Range Dim FirstRow As Integer Application.EnableEvents = False If Target.Column = 1 And Target.Value <> "" Then If Target.Row = Range("A" & Rows.Count).End(xlUp).Row Then FirstRow = 1 Else FirstRow = Target.Row End If With Range("A" & FirstRow & ":A" & Range("A" & Rows.Count).End(xlUp).Row) Set MyRange = .Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) If FirstRow = Target.Row Then Set MyRange = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) MyRange.Select Else MyRange.Select End If End With End If Application.EnableEvents = True Myerr: Application.EnableEvents = True End Sub

3620313
質問者

お礼

回答ありがとうございました。助かりました。

3620313
質問者

補足

回答ありがとうございます。 教えていただいた内容で、うまく動作しました。 応用で、もう1点教えていただきたいことがあります。 検索するセルに関しA列からB列用を作成しました。 下記内容です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Err GoTo Myerr: Dim MyRange As Range Dim FirstRow As Integer Application.EnableEvents = False If Target.Column = 1 And Target.Value <> "" Then If Target.Row = Range("B" & Rows.Count).End(xlUp).Row Then FirstRow = 1 Else FirstRow = Target.Row End If With Range("B" & FirstRow & ":B" & Range("B" & Rows.Count).End(xlUp).Row) Set MyRange = .Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) If FirstRow = Target.Row Then Set MyRange = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) MyRange.Select Else MyRange.Select End If End With End If Application.EnableEvents = True Myerr: Application.EnableEvents = True End Sub AをBに変えたマクロなのですが動作しません。 どこがおかしいのか教えていただきたく。

その他の回答 (1)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

> AをBに変えたマクロなのですが動作しません。 > どこがおかしいのか教えていただきたく。 B列をダブルクリックしていくということですね。 If Target.Column = 1 ↓ If Target.Column = 2 としてください。ここだけは列をA列を1として2,3,4と右へ数えて数値で指定する仕様となっています。

3620313
質問者

お礼

回答ありがとうございます。うまく動作しました。検索セルが結合しているとエラーになってしまうので、別途質問させていただきます。

関連するQ&A

  • Excelでのセル検索

    添付図のように「検索と選択」をクリックし、さらに「検索」をクリックし、文字列を入力し検索を実行し、該当があればそのセルへジャンプしますが、 これをこのシートと別のシートの任意のセルに検索文字列を入力し、該当があった場合にそのセルへシートを跨いでジャンプさせることは可能でしょうか? 表現がわかりづらいかもしれませんが、不足情報は補足しますので、宜しくお願い致します。 ちなみ添付図はExcel2010でのスクショになります。

  • エクセルのセル参照、一つずつ参照セルをずらしていきたい

    エクセルのセル参照の方法について教えてください。 2つのシートがあって、 ひとつのシートにはC4,D5,E6…というように行と列がひとつずつ増えていくところに値が入力されています。 このシートから、C4,D5,E6…のセルの値を取り出して 別のシートのA1,A2,A3…に縦に並んで表示させたいのですが、どのようにセルを参照させればC4,D5,E6…という 行と列がひとつずつ増えていくセルを参照できるでしょうか? よろしくお願いいたします。

  • 曖昧検索について

    こんにちは!どなたか教えてください! 下記のようなリストがあって、別シートのA1セルに「ひも」と入力したとき、B1セルに「A-1」と(できればB2セルに「A-2」も表示)を表示させることはできますでしょうか? 商品ID(A列) 科目(B列) 品目(C列) A-1   包材    ひも2 A-2     包材    ひも2 A-3   包材    ガムテープ 求める結果は、リストの中に「A1セル」に入力した文字と部分一致するデータを「B1セル」に表示させたいのです。 完全一致のものを表示することはできたのですが、部分一致の表示ができません・・・。 現在B2のセルには、このような =IF(COUNTIF(別シート!C:C,A1),INDEX(別シート!A:A,MATCH($A1,別シート!$C:$C,0)),"該当なし") と入れてあります。 よろしくお願いたします!

  • 検索の仕方を教えて下さい

    Excelの検索の仕方を教えて下さい。 下記のような表があります。  A B C D E D … 1 あ い う え お か 2 1 A氏 5 3,198 35 計算式       6 3,215 27       7 3,148 41       8   0 0       9   0 0 7 2 B氏 5 18,000 25       6 17,250 41       7 18,140 30       8    0 0       9    0 0 1行目には、文字列が入力されています。 A2~A6・B2~B6及びA7~A11・B7~B11はセルが結合してあり、それぞれ1つのセルになっています。 D2に計算式を入れる場合ですが… 別のシートに表があり、=IF(Sheet2!A1=0,0,ここからの計算式です。) Sheet2のA1には数字の1が入力されています。 まず、A2の1という数字を検索し、次にC列の5を検索し、5の横列E列の数字(3,198)を求める。 C列とE列の交わる値を結果と出したいのです。 =IF(Sheet2!A1=0,0,VLOOKUP(Sheet2!A1,A2:E11,INDEX(C2:E11,MATCH(5,C2:C11,0),MATCH("え",C2:E2,0)))) としたのですが、計算結果は#REF!です。 どのように計算式を立てれば良いのでしょうか?

  • エクセルで、文字列を検索し、その文字を含んだセルの内容を別のシートに表示する。

    SHEET1のA列に文字列を含むデータがあります。 これをデータベースとして、 SHEET2のセルA1に「ある特定の文字列」を含むSHEET1のセルの内容を表示させたい場合、どのような関数を使ったら良いでしょうか。 具体的には、SHEET1に特許明細の各項目が、A1~A100くらいまであります。 各項目には、例えば、出願人、出願日、効果、請求項などの文字列が含まれます。 そこでSHEET2のA1に「請求項」と入力すると「請求項」という文字列を検索し、その文字列を含んだセルの内容を表示させたいのです。そのセルは一つとは限りません。 以上のような事は、関数で可能でしょうか。

  • セル内の数式中の文字列を検索

    セル内に数式が入っている場合、その数式中の文字列を検索する関数がありますか。 例えばB1セルに=Sheet1!K2*Sheet2!K2*Sheet5!K2 B2セルに=Sheet4!K2*Sheet3!K2*Sheet6!K2 D1セルにB1の数式内のSheet2という文字があれば1を表示させ    無ければ0を表示させるというような関数はあるでしょうか。

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

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

  • Excel 複数セルから文字列の検索、表示

    エクセル初心者です。 過去のものを探しては見ましたが、うまくキーワードを見つけられなかったので 質問させてください。 リストで次のようなものがあるとします。  A   B  C  D  E  F  G 1○ 12 45 - 98 - 2■ - - 12 - 06 3◇ 35 12 01 99 - 4× - - - - 12 5☆ 08 61 20 12 - このリストで各行ごとにB~F列のセルにある「1」で始まる文字列を検索して 該当する文字列をG列に表示する方法はありますでしょうか? 関数とかVBAについては???なので、わかり易くお教え頂けると助かります。 よろしくお願いいたします。

  • Excelにて、参照先のセル列を求めるには?

    教えて頂きたいのですが、 Excelにてシート1に、1の段から9の段までの九九表があります。 その九九表よりシート2のA1に『=』で、 ランダムに答えを持ってくるとします。 そしてさらに、シート3のA1に、シート2のA1を参照して シート1の列が出せるようにするには どうすれば良いのでしょうか? 例を出すと、 シート1のD6=24 (D=4列目 、 6=6行目)を、 シート2のA1に参照させました。 シート2のA1には24(式は『=D6』)が入っています。 シート3のA1にシート2のA1を参照させて、 『4』(4列目)と表示させるには どういう関数式を入れれば出来ますか? もちろんシート2のA1は その都度ランダムで、入れるセル番号が変わります。 また、九九表というのはあくまで例です。 実際には専門用語の入った一覧表になっていますので、 九九のような、前後に関連性がある表ではありません。 ただ、参照しているセルの前のセルまで さかのぼってセル情報を取得出来る方法を知りたいのです。 こういうことって可能でしょうか? 分かる方教えて下さい。宜しくお願い致します。

  • 2行2列セルのオートフィルコピー

    excel2003 D11:E12の結合セルに参照式が入っています。 =LIST!I11…(1) 以降 D13:E14 は =LIST!I12 D15:E16 は =LIST!I13 というコピーをしたいです。 (1)のセルでオートフィルコピーを実施すると、 D13:E14 は =LIST!I13 D15:E16 は =LIST!I15 と飛び飛びになってしまいます。 調べてみると行が結合されたもののオートフィルコピーは、 文字列表記にしてからオートフィルコピーし、データ区切り位置で変更すると、 飛び飛びにならずにコピー可能ということで、1列の場合は対象のコピーが実現できました。 しかし、今回の場合、2行2列のセルなので 下記の様なexcelのエラーが表示されます。 ------------------------------------------------------------------------- 一度に変換できるのは、1列だけです。範囲には複数の行を選択できますが、列は1列しか選択できません。1列だけのセル範囲を選択し、再度実行してください。 ------------------------------------------------------------------------- オートフィルはだめみたいなので、 2行2列のセルを参照番号が連続した状態で、簡単にコピー可能な方法を教えていただきたく。

専門家に質問してみよう