アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (5件)

》 Vlookup関数以外でも検索するコードがあるようですが、Vlookup関


》 数に限った場合でよろしくお願いします。

その理由は何なのですか?

この回答への補足

回答ありがとうございます。

検索するコードの中でVlookup関数が極めて処理速度が早いようなのです(と書いてありました)。
なので、セルの番地を返すことが可能ならVlookup関数を使用するのがいいのかな?と思いました。
まぁ、セルを1つ1つ調べていくプログラムを作ってそれほど時間がかからないなら大して問題ではないのですが・・・。

補足日時:2010/03/01 16:27
    • good
    • 0

無理です。

なんの意味があるのですか?
VLOOKUPは値を返すだけで、行列は返しません。

Match関数を使うか、VBAで検索する処理を作成して下さい。
    • good
    • 1

No2です。


別にマクロもそれほど遅くはないと思います。
PCが遅いと・・・ですが

(ちなみに完全一致検索です。)
↓Findを使って検索とか(これならRange返すので)
Sub test()
 Dim myRange As Range

 With ActiveSheet
  Set myRange = .Range("A:A").Find(What:="検索値", LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, MatchByte:=False, SearchFormat:=False)


  If myRange Is Nothing Then
 'みつからず
  Else
 '見つかった
  End If
 End With
End Sub
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

時間はそれほど気にしなくてもいいんですね。

ありがとうございました。

お礼日時:2010/03/01 20:53

[回答番号:No.1この回答への補足]へのコメント、



》 それほど時間がかからないなら大して問題ではないのですが…

貴方にとって「大して問題ではない」時間は具体的には何分あるいは何秒以内ですか?

この回答への補足

回答ありがとうございます。

長く感じるのは大体30秒ぐらいでしょうかね。検索だけならできれば、10秒ぐらいが理想です。

補足日時:2010/03/01 21:52
    • good
    • 0

[回答番号:No.4この回答への補足]へのコメント、



Vlookup関数の一般式は
   =VLOOKUP(検索値,範囲,列番号,検索の型)
ですね。

Vlookup関数が対象とする範囲が例えば A1:D100 で、かつ、
Vlookup関数が返す値がC列にあるもとすれば、
   ="C"&MATCH(検索値,A1:A100,検索の型)
なる式がご希望のセル番地を返します。

この式を貴方の“膨大な”ワークシートに適合させて、検索に30秒以上を要するかどうか試してみるのも一興かと。
    • good
    • 3
この回答へのお礼

返事が遅くなって大変申し訳ありません。

そうですね。自分のデータでプログラムの処理時間を調べてみるのも必要ですね。

ありがとうございました。

お礼日時:2010/03/05 00:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A