- ベストアンサー
【ExcelVBA】VLOOKUPで商品名を表示する方法
- ExcelVBAを使用して、VLOOKUP関数を使って商品名を表示する方法について質問しています。
- 具体的には、1桁の数字を編集して3桁の数字に変換し、別のファイルの一覧にある商品名をキーとしてVLOOKUP関数を利用してE列に表示させたいと考えています。
- 質問者はVBA初心者であり、効率的でシンプルな処理方法についてアドバイスを求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 結論的なものではありませんが、一応、ここを検索してみると分かりますが、マクロで、VLOOKUPは、あまり意味がないのです。特に、はっきりとした理由ではないのですが、引数として、Rangeオブジェクトの範囲を常に入れておく入れたりしても、VLOOKUPでは、途中で面倒になってしまうのです。 A1:C10 A B C あ 1 11 い 2 12 う 3 13 え 4 14 お 5 15 か 6 16 き 7 17 く 8 18 け 9 19 こ 10 20 E い あ う ------------------------------- 'Vlookup 関数を使わないで、検索する方法 Sub Test1() Dim i As Variant Dim c As Variant Dim myData As Range Set myData = Range("A1:C10") 'Application.ScreenUpdating = False For Each c In Range("E1", Range("E65536").End(xlUp)) i = Application.Match(c.Value, myData.Columns(1), 0) If Not IsError(i) Then 'F 列に出力する c.Offset(, 1).Value = myData.Cells(i, 3).Value End If Next c 'Application.ScreenUpdating = True Set myData = Nothing End Sub ------------------------------------ それから、 <1>まず、キーとなる数字を編集してから、一番上の行~最終行にかけて、一気にVLOOKUPをかけた方がよいのでしょうか? <2>それともループの中で1行編集するごとに、VLOOKUP関数をキー列の隣に入れていった方がよいのでしょうか? VLookUp を使うのは別として、ループの中で1行ごとにほうが、コードとしては分かりやすいかと思います。 マクロの処理を速くする方法は、 Application.ScreenUpdating = False 'セルにアクセスするコードを入れる Application.ScreenUpdating = True
お礼
こんにちは。 ここの皆様のお陰で、無事完成しました。 書いて頂いたコードを既存のコードに組み込む方法がわからなくて、結局ループの中でVLOOKUPをかけたのですが、VBAの考え方など非常に参考になりました。 本当にありがとうございました。