• ベストアンサー

複数行列のセル範囲から検索する方法

Excel2003を使っています。 A1:Z80のセル範囲から指定した値を検索し、その値の番地を取得する方法を教えてほしいです。 重複する値は入力されていませんが、空白セルもあります。 他のシートの任意のセルに検索したい値を入力し、見つけた番地にたいするリンクを設定したいのです。 VBAでも関数でもいいので、力を貸して下さい。

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

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

●マクロの記録をとり(この場合検索操作)基礎的なことは勉強せよ マクロの記録に言及して無いが、 新しいマクロの記録モードで、検索の操作をして、でてきたコードをじっくり考えること。そんなこともせず(従って焦点が絞れてない)、全部解答を書いてくださいという、コーナーではないはず。 ●WEB照会をせよ。 VBAの本でも必ず記述があり、WEBでも「Find メソッド」で照会すれば沢山の記事がある。 まず http://officetanaka.net/excel/vba/cell/cell11.htm ほか多数。

kobuta2008
質問者

お礼

大変失礼しました。 親切な回答者の方々に甘えすぎていたと反省しています。 Findを使うというヒントをもらえたことで、ほとんど解決しました。 ところが、コードを実行して、理解できない事が起こったので捕捉の部分に載せてみます。 もしよかったらまた相談に乗ってほしいです。

kobuta2008
質問者

補足

自家育成、データ、居場所。 この三つのシートのセルをHyperlinkとGotoで移動しています。 "自家育成""居場所"間の移動だけならデータシートは必要ないのですが、 "自家育成"シートはコピーして増えていくので、"居場所"から"自家育成"シートにリンクさせる時の番地指定が難しいと感じました。 そのためリンクさせたい全ての値の情報が入っている"データ"シートと"自家育成"の間にあらかじめリンクを設定しておくことで、"居場所"から"データ"にとび、Followを使ってさらに"自家育成"に戻れるようにしました。 "自家育成"に値を入力した時、"データ"から"自家育成"に戻るリンクを設置していますが、"居場所"に値を入力する前に"自家育成"からダブルクリックで"居場所"のセルに移動しようとすると、 "データ"で設置されていたHyperlinkの移動先が変わっているのです。 "自家育成"のセルに移動するはずだったのが、"データ"シート内の"自家育成"シートで記入した番地に移動する設定に変わります。 "自家育成"でC1に入力した時は、***xls'自家育成'!$C$1だったリンクの移動先が、、***xls'データ'!$C$1になります。 "居場所"に目的の値が入力されているときはこの不具合は起こらないのですが。 1つのシートに複数のイベントが書かれています。 今回のコードは二つですが、両方ともC列に入力したりダブルクリックしたりしています。それが原因でしょうか? Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 3 Then Exit Sub 'C列以外の変更なら処理を終了 If Target.Count > 1 Then Exit Sub 'セルを二つ以上選択した場合 If Target.Value = "" Then Exit Sub 'データの空の場合 Dim z, kennsaku, x x = ActiveSheet.name Set z = Worksheets("データ").Range("$B$1:$B$65536") kennsaku = Application.Match(Target.Value, z, 0) If IsNumeric(kennsaku) Then Worksheets("データ").Hyperlinks.Add Anchor:=Worksheets("データ").Range(Cells(kennsaku, 2).Address), Address:="", SubAddress:="'" & x & "'!" & Target.Address & "" End If End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim banngoukennsaku Set banngoukennsaku = Worksheets("居場所").Range("A1:Z80").Find(what:=Target, lookat:=xlWhole) If banngoukennsaku Is Nothing Then MsgBox "「居場所」には記載されていません。" Exit Sub Else Application.Goto reference:=Worksheets("居場所").Range(banngoukennsaku.Address) End If End Sub

その他の回答 (1)

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

Find と Address を調べてみましょう。

kobuta2008
質問者

お礼

Findを調べたところほとんど解決しました。 ありがとうございます。

関連するQ&A

  • Excelの関数で複数の行・列範囲を検索する方法

    Excelの関数について質問です。ある値が何行目の何列目にあるかはCtrl+Fを使えばすぐに解りますが、このようなことを関数で実行することはできますか? 例えば、Sheet1のA1からZ40まで重複のない値が入っていたとして、別のシートでA1~A10に探したい10種類の値を入力すれば、その10個の値がSheet1の何行目の何列目にあるかをB列で表示できるといった、そういうことができる関数はありますでしょうか? MATCHでは一度に複数の行や列を検索できないようなので困っています。 よろしくお願いします。

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • EXCEL2002で、関数式入りのセルの計算結果の値のみを次のセルにコピーする方法

     EXCEL2002で、関数式入りのセルの計算結果の値のみを次のセルにコピーする方法について、お聞きします。  VBAを使って、ボタン一つで一発置換出来ないでしょうか? 関数式とは、外部参照で、リアルタイムで可変しますが、「ボタン押下」時という任意の一時点の値を"記録"したいのですが。  (1)関数式入りのセルの番地は、B5~B229⇒⇒⇒⇒⇒(2)計算結果の値のみをコピーするセルは、 C5~C229 という配置になります。VBAにお詳しい方であれば、「あ~あの命令文一つ使えば、簡潔に出来るのに‥‥‥」というタイプの問題ですので、VBAを、直接、書き込んで頂けないでしょうか?  何卒御、宜しくお願いします。

  • EXCELで範囲内にある値を検索してA列の値を返す

    タイトル通りなのですが、OSはXPでEXCEL2000を使用しています。 シート内ですが 1.A列には文字列が入っています。200行まで空白は無いです。 1.B列からL列の200行までに数字がランダムに入っています。 2.数字は1~500までです。 3.行によってはL列まですべてのセルに値が入ってません。  数字の入っていないセルは空白です。 4.数字の重複はありません。 やりたいことは 別のシートのA列に1~500までの数字を入れ、B列に上記範囲の中からその数字を検索して、その行のA列の値を返したいのですが、出来ません。 どの関数を組み合わせれば出来るのでしょうか? vlookupの検索範囲は1列だけなのでダメでした。 よろしくお願いします。

  • EXCEL関数で値の範囲検索をしたい

    EXCEL関数で値の範囲検索をしたい お世話になっております。 シートに下記の表があります。    A    B    C 1  レベル MIN  MAX 2  1    0.3   0.7 3  2    0.8   1.2 4  3    1.3   1.7 5  4    1.8   2.2 6  5    2.3   2.7 7  6    2.8   3.2 8  7    3.3   10 たとえば、A10のセルに 1.5 と入力したら、その値がどのレベルの範囲であるのかを検索し、 レベルを返したいのです。 1.5のレベルは3なので、隣のA11のセルに 3 と表示する関数を作成したいのです。 値一致検索であればVLOOKUPを使えばいいのですが、 範囲検索はどうすればいいのかがわからなくて 質問しました。 ご教授おねがいいたします。

  • excelのセルの色を変える

    excel2000でsheet1にある列のうち たとえば sheet1のセルA1の値が「Z-1」だったら sheet2のセルB1を赤に塗りつぶす ってことはマクロでできますか? できなければVBAでどのようなコードになるのか教えていただけませんでしょうか?

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • Excelでのセル検索

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

  • VBAでの選択範囲内の削除方法。

    Excel2003でVBAを使っています。 まず、VBAである範囲(例えば、A1からK20)を指定した後、その範囲内にある値の中で、aaaとbbb以外の値のセルを空白セルにしたいのですが、どのようにしたらよいのでしょうか? aaaとbbbの入っているセルを空白セルにする場合と、aaaとbbb以外の値が入っているセルを空白セルにする方法を教えてください。 宜しくお願いします。

  • ExcelのVlookup関数で一致した文字のセルの番地を取得する方法

    ExcelのVlookup関数で一致した文字のセルの番地を取得する方法 プログラム(VBA)で、検索で使用する関数でVlookup関数というのがあるというのが最近知ったのですが、Vlookup関数は、検索するセルの範囲を指定して、検索対象の文字列が一致した場合、そのセルの内容(値)を返すという風に書いてあったのですが、値ではなく、そのセルの番地を取得する方法はあるのでしょうか? ありましたら、その方法を詳しく教えてください。Vlookup関数以外でも検索するコードがあるようですが、Vlookup関数に限った場合でよろしくお願いします。 回答よろしくお願いします。

専門家に質問してみよう