• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロVLookupについて)

エクセルマクロVLookupについて

このQ&Aのポイント
  • エクセルマクロを使用してVLookup関数を実装しようとしていますが、値が正しく表示されません。
  • 定義ブックと辞書ブックの内容を参照するためにVLookup関数を使用していますが、セルにカーソルを合わせると式が表示されます。
  • エクセルのバージョンは2007です。初心者のため、修正方法を教えてください。

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

  • ベストアンサー
  • weboner
  • ベストアンサー率45% (111/244)
回答No.1

>何行目まで、というのを変数にしてマクロで実装しようとしています。 辞書の範囲が増えても Range("B:F") と指定すれば最終行を求める必要はないのですが マクロ上でVLOOKUPを利用する場合 Application.VLookup(検索値, 範囲, 列番号, 検索方法) 範囲(SerchArea) は Rangeオブジェクトです ちと修正すると Sub sample() 'ここから Dim objWBK As Workbook Dim objSH As Worksheet Dim SerchArea As Range Set objWBK = Workbooks("辞書ブック.xls") Set objSH = objWBK.Worksheets("辞書シート") Set SerchArea = objSH.Range("B:F") 'ここまでが検索範囲の定義です For I = 11 To ColumnCnt  'ColumnCntは変数ですか?提示されたマクロには定義されていませんが、そのまま残しておきます ItemCode = Cells(I, 3) Cells(I, 16).Value = Application.VLookup(ItemCode, SerchArea, 2, False) Next End Sub これで動くな?

koropo3
質問者

お礼

ありがとうございました!無事想定通りに動きました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • weboner
  • ベストアンサー率45% (111/244)
回答No.2

追記: ちなみにVLOOKUPでは項目は1つしか取得できないため4項目をコピーするのに4回実行が必要ですが Findメゾットを利用すると Sub sample() Dim objWBK As Workbook Dim objSH As Worksheet Dim SerchArea As Range Dim ItemCode As Range Set objWBK = Workbooks("辞書ブック.xls") Set objSH = objWBK.Worksheets("辞書シート") Set SerchArea = objSH.Range("B:B") For I = 11 To ColumnCnt Set ItemCode = Cells(I, 3) Buf = SerchArea.Find(What:=ItemCode.Value).Offset(0, 1).Resize(1, 4) ItemCode.Offset(0, 1).Resize(1, 4) = Buf Next End Sub 一回の処理で4列分コピーできます

すると、全ての回答が全文表示されます。

関連するQ&A