エクセルマクロの挫折しない勉強法や仕事で使いこなすコツを徹底解説!
講師の寺澤さんはこれまでの20年間マクロを使って様々な業務を効率化させるなど、数多くの社内表彰を受けてきました。例えば、数十万行の元データから分析用データを毎週作成する作業。人の手だと1週間かけても終わらない作業ですが、マクロを使うと30分程で完成してしまいます。さらに自ら社内講座も主催、全くマクロを触ったことがない数百人を指導し、満足度98%と人気を博しています。近著『4時間のエクセル仕事は20秒で終わる』では、そのエッセンスを余すところなく紹介しています。
本連載では、エクセルマクロを仕事で使うための本当に必要な知識だけを、できるだけわかりやすく説明していきます。
セルの内容が条件になる繰り返し処理
今回はセルの内容によって条件を指定する繰り返しマクロについて学んでいきます。この繰り返し方法は、主に条件に合ったセルを探して処理したい場合で利用します。それでは、2つのマクロを作って練習します。
1つ目は条件を文字に設定し「えええ」セルを選択させます。
2つ目は条件をセルの色に設定し、赤色のセルを選択させます。
はじめに繰り返しの始点となるセルA1を選択します。
Do~Loop Untilを使って、1セルずつ下がって中の情報が条件(文字や色)と一致するかチェックする動作を繰り返します。そして、一致したところで処理が停止します。指定した条件を満たすセルがないと、無限ループしてしまいます。
調べる対象のセルが変化していくので、セルの指定方法は今選んでいるセルを表すSelectionを使うと書きやすいです。セルの値によって繰り返し処理を止めるマクロです。
Sheets("練習").Select
Range("A1").Select ←Range("A1").SelectでA1を選ぶ
Do
Selection.Offset(1, 0).Select ←探すセルが1つずつ下がる
Loop Until Selection= "えええ" ←セルの値が「えええ」だと繰り返し処理を終了
つづいて、セルの色によって繰り返し処理を止めるマクロです。
Sheets("練習").Select
Range("A1").Select
Do
Selection.Offset(1,0).Select
Loop Until Selection.Interior.Color = RGB(255, 0, 0) ←セルの色が赤だと繰り返しを終了
完成させて動かしてみよう
それぞれ「繰り返し1」「繰り返し2」という名前を付け、マクロを書きましょう。
ボタンにそれぞれのマクロを登録し、保存した後に押してみてください。繰り返し1のマクロでは「えええ」と書かれたセル、繰り返し2のマクロでは赤いセルが選択されれば成功です!
1 Range、Select、Selection、Offset、Loop、Untilなどの綴りが間違っている
2 セルや文字が" "(ダブルクォーテーション)で囲まれていない
3 Select、Offset、Interior、Colorの前に.(ピリオド)がない
無限ループが起こったときにチェック!
セルの値や色を条件とするDo~Loop Untilの繰り返し構文で無限ループを起こす大きな原因が3つあります。
1 「練習」シートが選択されていない
シートを選択していないと、ボタンのあるシートでマクロが動き出します。条件に合うセルを探し出せず、無限ループになります。
2 条件とした値が実際のセルの値と完全一致していない
条件とセルの値が見た目上は同じでも、セルの値の後ろに空白がついていることがあります。完全一致とならず、条件に合うセルを探し出せないため、無限ループになります。
3 条件とした色が実際のセルの色と違う
条件とセルの色が同じに見えても、RGB値は一致していないことがあります。条件に合うセルを探し出せず、無限ループになります。
(本稿は、寺澤伸洋著『4時間のエクセル仕事は20秒で終わる』を抜粋、再構成したものです)
寺澤伸洋(てらさわ・のぶひろ)
1976年、大阪府生まれ。灘高校、東京大学経済学部卒業後、日系メーカーで17年間勤務。経理や営業、マーケティング、経営企画などに携わり、独学で覚えたエクセルマクロを用いて様々な分析や業務改革を行う。2017年、GAFAの日本法人のうちの1社へシニアマネージャー(部長)として転職。これまでエクセルマクロを用いた業務改善などで数多くの社内表彰を受けている。手作業では不可能なほど大量のデータを、短時間で分析しやすく加工したことが評価され、社内エクセルマクロ講習会の講師として延べ200人以上に講座を実施。エクセルマクロについて1から10まで教える詰め込み型の学習ではなく、仕事に必要な部分だけを効率的に学べる講座として満足度98%の高い評価を受けている。