見出し画像

11-VLOOKUP使わずにマクロで。(エクセルマクロ)


マスタを配列に入れて、配列から検索して値を入れる

皆さんこんにちは。
今回はVLOOKUP関数で別のファイルから参照する作業をマクロでする場合の一つのやり方をご紹介します。

◆今回のマクロ実行内容イメージ図

画像1


◆書くマクロ

画像2

これだけです。。
変数宣言が入っているので長いマクロに見えますが、ひとつづつ見ていけば大丈夫。

◆解説

画像3

★「①配列にする」の部分は次のコード2行のみです。
この2行はセル範囲を配列にする場合の書き方なので、特に太字の部分はこのまま覚えておくと良いでしょう。

画像4

Dim masuta As Range
➡【変数宣言】masutaという変数はRangeオブジェクトですよ。という意味です。 

Set masuta = Workbooks("マスタファイル.xlsm").Worksheets("マスタ").Range("A1:C8")
➡1行目で作った変数に範囲をSetします。

これでmasutaという名前の配列ができました!


★次の2行は書込み先シートを変数に入れています。

画像6

Dim kakikomi As Worksheet
➡【変数宣言】kakikomiという変数はWorksheetオブジェクトですよ。という意味です。 

Set kakikomi = ThisWorkbook.Worksheets("今月")
➡先ほど作った変数(kakikomi)に指定のシートをSetします。
(このマクロは書込み先のエクセルファイルに書いているので「ThisWorkbook」としています。)

画像7

なんでシートを変数に入れたかというと、
次に出てくるコードの部分が長くなるのでいやだからです。
↓↓先ほど作った変数を使って書いたコード。

画像7

↓↓これを変数を作らずに書くと・・・

画像8

長くなるうえにタイピングミスをする可能性もあります。

次。

画像9

Dim As Long
Dim As Long
➡【変数宣言】i という変数は整数ですよ。
➡【変数宣言】j という変数は整数ですよ。

★Longはオブジェクトではなく、データ型なので「Set」は使いません。
最初はこのまま覚えて前へ進みましょう。

長くなってきましたので今回はここまでです。
次回セル範囲の配列について書いていきます。


↓↓この記事に関連する作業動画はこちらです。


この記事が気に入ったらサポートをしてみませんか?