3.簡単な検索
たった2行のマクロですが、異なるブック間で、同一名の項目の他のデータを抽出します。
2項ではsubで定義したマクロでしたが、Functionはシート上で関数として利用でします。
使う時はこの関数を登録したエクセルファイルを開いておきます。
VLOOKUPはコピー元と一致していなくとも、値を返します。
更に、並べ替えしてないと、検索して通りこした段階で前の位置の値を取り出すため、
違った結果となります。
このブックを呼び出しておき、合成したいデータのブックも開いておきます。
シート間でも使えます。あとは通常の関数として使います。
=Fmatch(検査文字a, 検査範囲b, 抽出範囲c)
=Fmatch(A4,match2!A:A,match2!B:B)のように選びます。
別のブック、シートから使う場合、関数を登録してあるブック名の例
vbaHLP3.xls!が必要です。下記が正解。
=vbaHLP3.xls!Fmatch(A2,"Sheet1!A:A","Sheet1!B:B")
関数/挿入でボックスに入力していくと”がついて、値が出ません。
=vbaHLP3.xls!Fmatch(A2,"Sheet1!A:A","Sheet1!B:B")
'Fmatch:ユーザー関数
'
Function Fmatch(検査文字a, 検査範囲b, 抽出範囲c)
Fmatch = "" '初期値/エラーの時。ないと#valueとなる。
Fmatch1 = Application.Match(検査文字a, 検査範囲b, 0)
'colum1 = 抽出範囲c.Column '列番号の値抽出
On Error GoTo lastline
Fmatch = 抽出範囲c(Fmatch1).Formula 'データの取り出し
lastline:
End Function
シート上での実施例
2列目に関数を入力しています。ひとつのセルに入れてあとは下にコピーします。
以下は検索するデータです。上の2列目に値が表示されています。
はじめに / 1.まずは作ってみよう / 2.基本形 /3.簡単な検索