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

初心者でもわかるExcelマクロ入門! 回数を指定する繰り返し処理をマスターPhoto: Adobe Stock

回数を指定する繰り返し処理

今回は繰り返し回数を指定するマクロについて学んでいきます。

練習として1行間隔で行を挿入する作業を2500回繰り返すマクロを作りましょう。次のようにデータが1行おきに並んでいる状態になります。

初心者でもわかるExcelマクロ入門! 回数を指定する繰り返し処理をマスター

この場合は、処理回数をカウントするために変数を利用します。アルファベット一文字で「i」や「j」「k」などがよく用いられるので、ここでもiを使います(iは英語で整数という意味のintegerの頭文字です。jやkはiの続きなので用いられることが多いです)。

回数カウント用の変数iをDimで宣言します。はじめに0を代入します。その後は1回処理を終えるごとに「i = i + 1」で1を足します。そしてiが目標の処理回数に達したら処理を終えるように条件を設定します。「i = i + 1」を書き忘れると、何回処理してもiの値が増えません。すると「i = 2500」という条件を満たさないので無限ループしてしまいます。

Dim i  '繰り返し数カウント用
i = 0 ←i = 0から始まる

Do ←Doを1回通ると i = i + 1でiの値が1増える

繰り返したい処理

i = i + 1
Loop Until i = 2500 ←2500回繰り返したい場合の条件

回数を指定するときのコツ

実際に2500回の繰り返し処理を作成していきましょう。

繰り返しマクロを作成するときは、まず1回目や2回目の作業を手でやってみましょう。その後マクロを書きはじめるとミスが少なくなります。

最初の行挿入では2行目を選択する必要があります①。

2回目に選ばないといけないのは4行目です②。

初心者でもわかるExcelマクロ入門! 回数を指定する繰り返し処理をマスター

つまり「まず2行目を選び行挿入」して「2行ずらして行挿入を2500回繰り返す」ことになります。これでマクロに書く内容が明確になりました。繰り返しのマクロを作るときには、はじめの数回を手作業で試してイメージを掴むことが非常に大事なのです。

繰り返し処理は、今回のように対象のセルや行・列が規則的に動くときに使います。都度対象の行を直接指定しなくてもいいようにSelectionを使います。

このSelectionの使い方は少し難しいかもしれませんが、繰り返し処理には欠かせないものです。マクロを書く際にも非常に効率がよくなるので、ぜひ理解してください。

今回のマクロは次のように書きます。

Dim i
i=0

Sheets(“練習”).Select
Range(“2:2”).Select

Do
 Selection.Insert ←行を挿入
 Selection.Offset(2, 0).Select ←選択される行が2行ずれる

i = i + 1 ←iを1増やす

Loop Until i = 2500 ←i が2500になると終了

完成させて動かしてみよう

「繰り返し3」という名前を付け、マクロを書きましょう。

初心者でもわかるExcelマクロ入門! 回数を指定する繰り返し処理をマスター

ボタンに今回のマクロを登録し、保存した後に押してみてください。「練習」シートに1行おきに2500行挿入されれば成功です!

エラーが出たらチェック! よくある間違い

1 Range、Select、Dim、Selection、Insert、Offset、Loop、Untilなどの綴りが間違っている
2 2:2が" "(ダブルクォーテーション)で囲まれていない
3 Select、Offset、Insertの前に.(ピリオド)がない
4「練習」シートが選ばれていない(ボタンのあるシートで実行される)

無限ループが起こったときにチェック!

処理回数を条件にするDo~Loop Untilの繰り返し構文で無限ループを起こす原因は次の通りです。
i = i + 1が抜けている
処理が終わってからiの値を増やし忘れると、何度処理をしても条件に到達しません。無限ループになります。

(本稿は、寺澤伸洋著『4時間のエクセル仕事は20秒で終わる』を抜粋、再構成したものです)