- 締切済み
VBAでVLOOKUP関数を使う
「在庫検索」に下記条件を追加するには、どうすれば良いのでしょうか。 1)G列が1500より大きければ Results = Application.WorksheetFunction.VLookup(ItemCode, SerchArea, 2, False) 2)G列が1500より小さければ Results = Application.WorksheetFunction.VLookup(ItemCode, SerchArea, 3, False) どちらの際も空白の条件、If ActiveCell.offset(i, 1).value = ""は残ります。 1)、2)とandを組み合わせる方法でチャレンジしたのですが、出来ませんでした。 ------------------------------------------------------------------------ 以下がベースの「在庫検索」です。 一度、質問して解決したのですが、更なる問題が発生してしまいました。 ご指導ください。 ------------------------------------------------------------------------ Sub 在庫数検索() Dim SerchName As String Dim SerchArea As Range Dim Results As Variant '初期設定 Range("A2").Activate ItemCode = Range("A2").Value i = 0 '検索範囲の設定(ポイント1) Set SerchArea =Worksheets("シート2").Range("List1") '商品コードが空になったら終わり Do Until ItemCode = "" If ActiveCell.offset(i, 1).value = "" Then '★1 On Error Resume Next ItemCode = ActiveCell.offset(i, 0).value Results = Application.WorksheetFunction.VLookup(ItemCode, SerchArea, 2, False) If Err <> 0 Then Results = "" ActiveCell.offset(i, 1) = Results End If '★1 i = i + 1 Loop
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
ヤリタイことをもうちょっと整理してみると,結局だいたい次のようになります。 sub macro1() dim Target as range dim i as long set target = worksheets("シート2").range("List1") on error resume next ’A列について巡回する for i = 2 to range("A65536").end(xlup).row ’B列が空なら計算する if cells(i, "B") = "" then ’VLOOKUPがエラーでなければ記入する cells(i, "B") = application.worksheetfunction.vlookup(cells(i, "A").value, target, iif(cells(i, "G")>=1500, 2, 3), false) end if next i end sub
- kybo
- ベストアンサー率53% (349/647)
G列というのが、「ItemCode」の値なのだとしたら、以下の様にします。 Do Until ItemCode = "" If ActiveCell.Offset(i, 1).Value = "" Then '★1 On Error Resume Next ItemCode = ActiveCell.Offset(i, 0).Value If ItemCode > 1500 Then ’● Results = Application.WorksheetFunction.VLookup(ItemCode, SerchArea, 2, False)’● Else’● Results = Application.WorksheetFunction.VLookup(ItemCode, SerchArea, 3, False)’● End If’● If Err <> 0 Then Results = "" ActiveCell.Offset(i, 1) = Results End If '★1 i = i + 1 Loop