こんにちは。
結論的なものではありませんが、一応、ここを検索してみると分かりますが、マクロで、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の考え方など非常に参考になりました。 本当にありがとうございました。