プロが教える店舗&オフィスのセキュリティ対策術

下の画像から「2列目」にしているので、答えはその列が入ります。
ただ、通常のVLOOKだと、列番号の箇所にCOLUMN 関数とか、
上に番号を付けて複合参照を使えば、残りが返えせますが、
vBAで、2~4列まで表示するには、どうしたらいいでしょうか?

「VBAでvlookupで価を返しましたが」の質問画像

A 回答 (3件)

>vBAで、2~4列まで表示するには、どうしたらいいでしょうか?


現在2列には、H列の内容を設定していますが、
3列、4列には、どこの列の値を設定したいのでしょうか。
    • good
    • 0
この回答へのお礼

はい、「1列(G2)、2列(H)、3列(I2)、4列(J2)」
このままですと、2行~12行の2列目(H列)しか
答えが出ません。

お礼日時:2022/11/11 21:29

こんばんは



>vBAで、2~4列まで表示するには、どうしたらいいでしょうか?
方法はいろいろ考えられます。

1)ご提示の方法で、2~4列をループする。

2)セル範囲に、関数式を設定する。
>通常のVLOOKだと、列番号の箇所にCOLUMN 関数とか、上に番号を付けて複合参照を使えば~
とおっしゃっている関数式を対象セル範囲にVBAで設定するという意味です。

3)参照範囲が連続しているのなら、
MATCH関数やFindメソッドで検索して、ヒットした行のセル範囲をまとめて転記する。


行方向にもループなさっているようですので、私なら行方向もまとめてしまって、2)の方法にするかな。
対象となる表の範囲が不明ですが、仮にG2:J12でよいものとするなら・・

With Range("B2:D12")
.FormulaLocal = "=VLOOKUP($A2,$G$2:$J$12,COLUMN(B1),0)"
.Value = .Value
End With

みたいな感じでしょうか。
    • good
    • 1
この回答へのお礼

助かりました

fujillin 様
ご回答ありがとうございます。
コピーして貼り付けたら出来ました。

ありがとうございます。

お礼日時:2022/11/11 21:57

以下のようにしてください。



Public Sub VLOOKUP試験()
Dim i As Long
For i = 2 To 12
Cells(i, 2) = WorksheetFunction.VLOOKUP(Cells(i, "A"), Range("G2:H12"), 2, False)
Cells(i, 3) = WorksheetFunction.VLOOKUP(Cells(i, "A"), Range("G2:I12"), 3, False)
Cells(i, 4) = WorksheetFunction.VLOOKUP(Cells(i, "A"), Range("G2:J12"), 4, False)
Next
End Sub
    • good
    • 0
この回答へのお礼

ありがとう

tatsumaru77 様
お忙しい中、ご回答ありがとうございます。
これならコピーして、条件を変更すればいいので
とてもいいですね。

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

お礼日時:2022/11/11 21:49

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