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

ExcelマクロでVLOOKを実行したい

同一シートにある「全体」の表から必要な項目をVLookで抜き出したくて
下記のマクロを作成しました。

「Sheet1」のA列(A2以下)には検索値(数字6ケタ)を入れています。
A2の検索値でヒットした値はB2・C2に入りましたが、A3以下の検索値は
スルーされてしまいます。どこを直したら良いのか、ご教授ください。
よろしくお願いします。
-----------------------------------------------------------------------
Sub 検索して値を取得する()
Dim 範囲 As Range
Dim 検索値, i As Long
Dim 出荷日 As Date
Dim 商品名 As String

Set 範囲 = Worksheets("全体").Range("E7:HG1000")
Set 検索値 = Worksheets("Sheet1").Cells(i + 2, 1)

If 検索値.Value <> "" Then

商品名 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False)
出荷日 = Application.WorksheetFunction.VLookup(検索値, 範囲, 160, False)

Cells(i + 2, 2).Value = 商品名
Cells(i + 2, 3).Value = 出荷日
i = i + 1
End If
End Sub

A 回答 (2件)

#1です。



Set 検索値 = Worksheets("Sheet1").Cells(i + 2, 1)

If 検索値.Value <> "" Then

商品名 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False)
出荷日 = Application.WorksheetFunction.VLookup(検索値, 範囲, 160, False)

Cells(i + 2, 2).Value = 商品名
Cells(i + 2, 3).Value = 出荷日
i = i + 1
End If


Do

Set 検索値 = Worksheets("Sheet1").Cells(i + 2, 1)

If 検索値.Value "" Then Exit Do

商品名 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False)
出荷日 = Application.WorksheetFunction.VLookup(検索値, 範囲, 160, False)

Cells(i + 2, 2).Value = 商品名
Cells(i + 2, 3).Value = 出荷日
i = i + 1

Loop

にしたらどうなる?
    • good
    • 0
この回答へのお礼

見事に希望通りの動作になりました。
素早いお返事ありがとうございました。

お礼日時:2010/05/03 16:04

「スルーされてしまいます」


いやいや、スルーじゃなくて元々1回しか走るように出来ていない。

次の検索値をセットして、ループさせないとね。

(whileで回して、if文でbreakさせてもいいし。)
    • good
    • 0

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