エクセルマクロの挫折しない勉強法や仕事で使いこなすコツを徹底解説!
講師の寺澤さんはこれまでの20年間マクロを使って様々な業務を効率化させるなど、数多くの社内表彰を受けてきました。例えば、数十万行の元データから分析用データを毎週作成する作業。人の手だと1週間かけても終わらない作業ですが、マクロを使うと30分程で完成してしまいます。さらに自ら社内講座も主催、全くマクロを触ったことがない数百人を指導し、満足度98%と人気を博しています。近著『4時間のエクセル仕事は20秒で終わる』では、そのエッセンスを余すところなく紹介しています。
本連載では、エクセルマクロを仕事で使うための本当に必要な知識だけを、できるだけわかりやすく説明していきます。

2つの表を自動で合体させるテクニック
ある表に、新しい列を挿入して、一番上のセルにVLOOKUP関数やSUM関数を入れる。
そのセルをデータの一番下までドラッグでザッと引っ張ってコピーし情報を付け足す作業、よくありますよね。一度きりならよいのですが、定例資料を作るのに毎週繰り返していると地味にめんどう。
実は、この作業もマクロにやらせることができます。
「練習」というシートに担当名と担当エリアの表があるとします。

今回はこれに、「所属」シートの表から各担当者の所属を付け足します。

さらに処理の最後に数式を消して演算結果だけを値貼り付けします。
これでエクセルを動かすたびに関数が再計算し、動きが遅くなることを防げます。

次のように考えてマクロを書いていきます。
① 「練習」シートB列に1列挿入し、セルB1にタイトルを付ける
② セルB2にVLOOKUP関数を入れ、表の1番下までコピーする
③ ②で数式を入れたセルをコピーし、同じ場所に値貼り付けする
では、1つずつ説明していきます。
①「練習」シートB列に1列挿入し、セルB1にタイトルを付ける
「練習」シートを選び、B列に新たに列を挿入します。次にセルB1に「所属」と入力します。
Sheets("練習").Select
Range("B:B").Insert
Range("B1") = "所属"

② セルB2にVLOOKUP関数を入れ、表の1番下までコピーする
セルB2にVLOOKUP関数「=VLOOKUP(A2, 所属!A:B,2,FALSE)」を入れて、所属を追加します。
合わせてセルB2をコピーしておきます。
Range("B2").Formula = "=VLOOKUP(A2,所属!A:B,2,FALSE)"
Range("B2").Copy

このセルからデータの終端セルB4までを選んでペーストします。データが何行あっても最後の行まで数式が貼り付けされるマクロにすれば使いやすくなります。
黄色のセルは終端セルと相対参照の組み合わせで選択できます。A列の終端セルを探し、右に1つ移動させます。このセルをSelectで選択しておくと、以後はSelectionで表せます。
Range("A100000").End(xlUp).Offset(0, 1).Select
セルB2からSelectionまでを範囲選択するには「Range("B2",Selection)」と書きます。
ここに先ほどコピーした数式を貼り付けます。
Range("B2", Selection).PasteSpecial Paste:=xlFormulas
③ ②で数式を入れたセルをコピーし、同じ場所に値貼り付けする
データを追加した範囲をコピーして、同じ範囲に値貼り付けしましょう。数式の結果が値になりファイルを軽くできます。VLOOKUP関数の参照元を消してしまってもエラーが出なくなります。
Range("B2", Selection).Copy
Range("B2", Selection).PasteSpecial Paste:=xlValues
完成させて動かしてみよう
「情報列挿入」という名前を付け、マクロを書きましょう。

ボタンにマクロを登録し、保存した後に押してみてください。「練習」シートのB列に所属の情報が挿入されれば成功です!
1 Selection、End(xlUp)、PasteSpecial、xlValues、xlFormulas の綴りが間違っている
2 B2とSelectionの間の,(コンマ)が:(コロン)になっている
3 Range("B2", Selection) の" "(ダブルクォーテーション)が間違っている
4 :(コロン)が;(セミコロン)になっている
5 「 :=」ではなく「=:」の順番になっている
(本稿は、寺澤伸洋著『4時間のエクセル仕事は20秒で終わる』を抜粋、再構成したものです)
参考記事① 初心者でも簡単マスター!「Excelマクロの学び方」4つのポイント
参考記事② たった1行でOK!Excelマクロで、データに挿入した空白列の末尾を選択するテクニック
参考記事③ Excelマクロ省力化のコツ!同じ大きさの範囲を何度も選択するときの便利な書き方とは?
参考記事④ 初心者でもわかるExcelマクロ入門! コピーしたセルのさまざまな貼り付け方をマスター
寺澤伸洋(てらさわ・のぶひろ)

1976年、大阪府生まれ。灘高校、東京大学経済学部卒業後、日系メーカーで17年間勤務。経理や営業、マーケティング、経営企画などに携わり、独学で覚えたエクセルマクロを用いて様々な分析や業務改革を行う。2017年、GAFAの日本法人のうちの1社へシニアマネージャー(部長)として転職。これまでエクセルマクロを用いた業務改善などで数多くの社内表彰を受けている。手作業では不可能なほど大量のデータを、短時間で分析しやすく加工したことが評価され、社内エクセルマクロ講習会の講師として延べ200人以上に講座を実施。エクセルマクロについて1から10まで教える詰め込み型の学習ではなく、仕事に必要な部分だけを効率的に学べる講座として満足度98%の高い評価を受けている。