別ファイルをVLOOKUP関数で読み込む際、関数を利用して、ファイルを開いた状態で、ファイル間同士を参照することは難しくありません。
しかし、この動きをVBAで動作させるとうまく動作しないことがあります。そこで、VBAによるマクロの記述を用いたVLOOKUP関数で別ファイルを読む込む手法を解説していきます。
VLOOKUP関数でファイル間同士の別ファイルを読み込み方
まずは、VLOOKUP関数を使ってファイル間同士を参照するのは、下記の2つのファイルで確認していきましょう。
参照データ元ファイル
A列には、商品名B列にはその単価を記載しています。
こちらのデータの商品名から単価を別ファイルにVLOOKUP関数を用いて参照してみましょう。
結果表示
A列の商品名をキーとして単価を上記参照元ファイルから出力してみます。
その時に使用する際の関数は、下記のように記述します。
1 | =VLOOKUP(A1,[ファイル名]シート名!列,2,FALSE) |
「2」というのは、2列目の値を返します。という意味です。こんな感じで、関数を使って参照するのはそれほど難しくないかと思います。
ただマクロでやろうとすると、これはうまく動作しないことがあります。
VBA(マクロ)によるVLOOKUP関数ファイル間同士の記述方法について
それではVBA(マクロ)で記述するとどのようになるのか、その記述方法についてみていきましょう。
その記述方法はこちら。
VBAを用いたVLOOKUP関数の記述の仕方
1 2 3 4 | Dim strFileName as String strFileName= "参照ファイルパス" ThisWorkbook.Worksheets("ファイル名").Range("セル").Formula = "=VLOOKUP(A2,[" & strFileName & "]シート名!$A:$B" & "2,FALSE)" |
注意
<記述する際の注意ポイント>
参照するファイルパスを記述する点
VBA使用せずに、シンプルに上記のような関数で参照する場合には、ファイル名だけで問題ありません。但し、VBA(マクロ)を活用する場合には、ファイルを直接触れるわけではないので、厳密なファイルがある位置、つまり参照先のファイルパスも記述しなくてはいけないということです。
このような感じで、ファイル名など、常に変更が掛かる箇所はなるべく変数にしてあげます。またシート名に関しても同様に行うと、融通の利く参照の仕方になります。
ファイル名やシート名を変数化する場合には、変数化しない部分とを「アンパサンド(& 変数 &)」でくくってあげて、左右の関数の記述と繋げてあげます。
まとめ
このような感じで、VBAによる関数をファイル名直接マクロに記述して上げると、VBAでも参照先を反映させることができます。
VBAないでVLOOKUP関数を使用する際には、ファイルのフルパスの記述が必要になることを注意して覚えておきましょう。