• ベストアンサー

EXCEL VBA VLOOKUPの様な検索したい

お世話になります。 VBAを使ってVlookupのような動きをする検索を実施したいのです。 添付図のようにsheet1に基本データが入っています。 [検索]ボタンをクリックしたらsheet1の商品番号をキーにして、sheets2を参照してsheet1の区分にA-Dの値を挿入したいと思います。 sheet1、sheet2ともにデータ量が可変です。 どなたかご教授いただけますでしょうか? お忙しいところ恐縮ですがよろしくお願い致します。 環境 WinsowsXP SP3

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

その通りVLOOKUPしてしまうのが一番簡単です。 sub macro1()  dim r as long  worksheets("Sheet1").select  for r = 3 to cells(rows.count, "A").end(xlup).row   cells(r, "C").value = application.vlookup(cells(r, "A").value, worksheets("Sheet2").range("A:B"), 2, false)  next r end sub

yakkun2338
質問者

お礼

keithinさん、早速のご連絡ありがとうございます!! ご教授いただきました方法で実現できました! vlookupをそのまま(?)使用すればよいのですね。てっきりロジックを組まないとできないのかと思っておりました。 いつも本当にありがとうございます!!

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >Vlookupのような動き・・・ とありますので一例です。 Sheet2のデータはA・B列にあるとします。 Sub Sample1() Dim i As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") i = wS1.Cells(Rows.Count, 1).End(xlUp).Row If i > 2 Then Range(Cells(3, "C"), Cells(i, "C")).ClearContents End If For i = 3 To wS1.Cells(Rows.Count, 1).End(xlUp).Row Set c = wS2.Range("A:A").Find(what:=wS1.Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then wS1.Cells(i, "C") = c.Offset(, 1) End If Next i End Sub こんな感じではどうでしょうか? ※ No.1さんが回答されていらっしゃるように VLOOKUP関数をそのまま使った方が簡単なような気がします。m(_ _)m

yakkun2338
質問者

お礼

tom04さん、早速のご連絡ありがとうございます!! ご教授いただきました方法で実現できました! No.1さんにご回答いただきました様にvlookupをそのまま(?)使用するという方法を知りませんでした(^^;; いつもtom04さんからは詳細なロジックをご教授いただいておりまして、とても勉強させていただいております。 いつも本当にありがとうございます!!