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

VBAプログラム上でVLookup関数を使用したいのですが、
検索するエリアが複数有ります。
各エリアの行と列の数は同じなのですが、VLookup関数は使えないようです。
複数のエリアでVLookup関数を使用する方法はあるのでしょうか?
それとも、For~Nextで検索する必要があるのでしょうか?

A 回答 (4件)

No.1・2です。



>Log計算している検索範囲だと
>検索してくれません。

とありますが、具体的にどのセルにどうのような計算結果が表示されていて
どの範囲を「VLOOKUP関数」の範囲にしたいのでしょうか?
その辺が判れば具体的なアドバイスができると思うのですが・・・

※ 当然のことながら範囲内に重複データはない!という前提です。m(_ _)m
    • good
    • 0

こんばんは



VLookUpを使用して結果を得たいのは1回だけなのでしょうか?
もし何度も繰り返し処理をするのであれば、DictionaryオブジェクトやADODBなどを使うのもアリかもしれません…

ちなみにですがシート上で使う場合はIF関数とIsNA関数も併用すれば組めますョ
画像の数式、文字判別できますでしょうか?
「離れたエリアでVLookupを使いたい」の回答画像3
    • good
    • 0

No.1です。


投稿後もう一度質問文を読み返してみると
VLOOKUP関数に関する質問で、他の方法はご希望ではなかったみたいですね。
VLOOKUP関数でやってみました。
配置は前回同様とします。

Sub Sample2()
Dim i As Long, c As Range, myRng As Range
Set myRng = Range("F1:F10,I1:I10,L1:L10")
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
Set c = myRng.Find(what:=Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(i, "B") = WorksheetFunction.VLookup(Cells(i, "A"), Cells(1, c.Column).Resize(10, 2), 2, False)
End If
Next i
End Sub

※ いずれにしてもVLOOKUP関数の範囲を指定するために
FINDメソッドを使ってしまいました。m(_ _)m
    • good
    • 0

こんばんは!



VBAでVLOOKUP関数を使用したい訳ですね?
使い方はワークシート関数と同じですが、「範囲」を特定してやる必要がありますね。
その「範囲」が特定できる条件がある場合は
各範囲の左上のセル番地が判れば、
Resizeプロパティで「範囲指定」が可能です。
わざわざVBAでやるのでれば、当方だと別方法(Findメソッド)でやります。

仮に↓の画像のようにVLOOKUP関数の各範囲が F1:G10・I1:J10・L1:M10 のように飛び飛びになっているとし、
B列にA列データを検索値として、完全一致する右隣りのデータを表示させたい場合は

Sub Sample1()
Dim i As Long, c As Range, myRng As Range
Set myRng = Range("F1:F10,I1:I10,L1:L10")
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
Set c = myRng.Find(what:=Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(i, "B") = c.Offset(, 1)
End If
Next i
End Sub

としてもVLOOKUP関数と同様の結果が求められると思います。

※ 飛び飛びの範囲に重複データがない場合は
>Set myRng = Range("F1:F10,I1:I10,L1:L10")
をいっきに
>Set myRng = Range("F1:M10")
のようにしても大丈夫だと思います。m(_ _)m
「離れたエリアでVLookupを使いたい」の回答画像1
    • good
    • 0
この回答へのお礼

Findメソッドを使う場合ですが、
検索範囲の数値がLog計算していて桁数が多いとダメでしょうか?
セルA1に1、セルA2に2を入れて2を検索すると
正しく検索できるのですが、Log計算している検索範囲だと
検索してくれません。
LookAtを部分一致にしてもダメでした。

お礼日時:2015/03/18 10:19

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