• ベストアンサー

ExcelVBAで、Findで検索するとき

お世話になります。 Findを使用して、特定のセルの中から検索するときに、 値ではなく、参照先から一致させることはできますでしょうか。 例えば、A1からA5までを検索するとします。 A1はB1を参照、A2はB2を参照…という具合に、B1からB5までを 参照しているとします。 B1からB5までは、順番に1から5までが入っているとします。 そこで、参照先の値が1のものを見つけたい場合、A1のセルを 返してくれるようにしたいわけです。 そのためには、どうすればよいかを探しています。 以上、よろしくお願いいたします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 『異なるシートから検索したい』場合です。 最初の回答でも書いたように「同じシート内」であれば参照先を取得するメソッドがあります。 しかし、残念ながら他シートの参照先を一発で取得するメソッドはないはずです。 そうなると、おっしゃるように「力技」でいくしかないと思います。 異なるシートから検索したいとおっしゃられても、tatapataさんのやりたいことがこちらにはよく理解できませんので、現在やっている方法を改善したいなら、まずコードを提示してみたらどうでしょう? もっと良い回答が付くのではないでしょうか。

tatapata
質問者

お礼

度々ありがとうございました。 メソッド一つで持っていく方法がないと分かっただけでも、 かなり助かりました。 また、先ほど教えていただいた内容も併せ、今後活用して いきたいと思います。 また何かありましたら、よろしくお願いいたします。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

参照先(ただし同一シート内に限ります)を取得するにはDirectDependentsプロパティを使います。 仮にB1:B5を検索し、それが数式の答えではなく値としての 1 だった場合、そのセルを参照しているセル(参照先)のアドレスを取得するなら Sub test01() Set Rng = Range("B1:B5").Find(What:="1", LookIn:=xlValues, LookAt:=xlWhole) '指定範囲を検索 If Not Rng.HasFormula Then 'もし数式でなければ MsgBox (Rng.DirectDependents.Address) '参照先セルアドレス End If End Sub

tatapata
質問者

補足

merlionXXさん、素早いご返答、ありがとうございます。 方法的には教えていただいた方法なのですが、問題は 『異なるシートから検索したい』場合です。 この場合は対策はありますでしょうか。 現在、Findを使用せずに、一つのセルごとにForで 回りながら比較して求めるといった、力技で対応しています。 もし、もっと良い方法がありましたら、よろしくお願いいたします。 尚、記述し忘れましたが、Verは2000です。

関連するQ&A