Excel VBA > Excel上級:マクロ > 定型化できるマクロとは何か
このエントリーをはてなブックマークに追加

定型化できるマクロとは何か

「定型作業はマクロで」は、定番中の定番処理

Excelのマクロ記録の説明をインターネットなどで見ていると「定型化業務に適している」という説明をよく見かけます。そして当サイトでも紹介しておりますが、改めて「定型化業務とは何か」を考えてみたいと思います。
そもそも「定型化」とは「繰り返し同じ操作を行う」とほぼ同義で語られていることが多いのですが、マクロ初心者などから見ると判断に苦しむ部分でないかと思います。
慣れてくると、「マクロ化しやすい」等判断ができるようになりますが、「同じ処理を繰り返し行う」というのは少し拡大解釈してみる必要があります。

※なお、ここで「マクロ化しやすい」とはマクロの記録で対応できるかどうかという意味ではないので気を付けてください。

全く同じ作業は起こり得ない!?

こちらは経験則ですが、厳密にいうと、常に同じファイル(データ)を使って行う作業では「全く同じ作業は起こり得ない」と考えています。
もし仮に起こり得るなら、一度その作業をやってしまえば以降作業は不要とも言えます。見方を変えれば、「単発の一回きりの業務」とも言えます。これはマクロに向いているどころかその対極となるような作業で、仮にこの作業の全工程をマクロ化するにしても、一回きりで不要となります。だとすれば、その工程の一部分だけマクロ化をして汎用的(他の作業でも部分的に使える)に作ったほうが効果が大きいことも考えられます。

全体は繰り返し、個別では繰り返し的

実際にマクロに適している業務は上記項目にある「全体は繰り返し、個別では繰り返し的」であることがほとんどすべてです。
例えば下記のような業務のイメージです。

ここに一つの表があります。月ごとの担当者売上表(A)です。
この表(A)は1か月経過するごとに前月のデータが追加されていきます。
(例えば7月に入ると6月分のデータが追加される)

ここでの作業としては
・この表(A)を年月別に並び替える(すでにできている状態)
・年月シートを作成する
・(A)から年月ごとに、該当する年月シートへコピーする


と言った簡単な作業があるとします。
この場合は
・全体としては繰り返し
・個別としては、年月が同じない、シート作成のシート名も同じでない、行の位置も年月によって変わる

等となります。これは「マクロに向いているかどうか」で、初心者やマクロを初めたばかりの方が迷う(悩む)ところではないでしょうか?
これは「マクロ化に向いている作業」でありますが、説明としては非常に感覚的な部分を含めているので難しいですが、見るべき点の1つとして繰り返しになっていない「年月」の部分です。
マクロ的?思考では「年月も固定値であってほしい」ということになりそうですが、それでは、この作業は成立しなくなります。
少し経験のある方だったら「最終月の行(末尾行、最終行)が分からないから範囲選択できない」等、技術的な制約も出てくるかもしれません。
しかしながら、この作業は
全体は繰り返し:データをコピー&ペースト、シートを作成
個別では繰り返し的:年月が1か月ごとに変わる

ような見方ができて、マクロ化対象業務と言えます。
この「年月が変わる」という部分については技術的な知識(変数)も必要になりますが、マクロ化できるおいしい?作業です。

判断するポイント「規則性があるか」、「未知の第3者が作業できるか」

マクロ化に適しているかどうかの判断材料としてまずは規則性が挙げられます。
分かりやすい例として「列」で見てみます。
先ほどの表(A)は3列で構成されています。

マクロ化できるのは、これ(3列構成)がこのまま継続した場合です。

もし、このマクロを作成した後に次のような表形式に変更されると対応できません。

これは、3列であるという前提のもとでマクロが作られており、そのため4列になると4列目(D列)が漏れてしまうというパターンです。
これは非常にわかりやす例として示しましたが、現実的にはもっと深入りして確認する必要があります。
逆にいえば、
「年月が変わる」、「行数が増える」以外は固定してなければならい、「そういう規則であることが前提」とも言えます。
ここを誤ると「この表だけマクロが動く」的なものとなります。(最初はこの繰り返しだと思いますが・・)

そしてマクロ化に適した作業かどうかを判断するポイントとして「未知の第3者が作業できるか」を参考にするといいと思います。
これは単純に「知らない人に作業の内容を説明しただけで、その人が作業できるかどうか」です。
ここで重要なのは、「客観的に判断できる仕組みがあるか」です。
マクロ化するときに必要なのは「客観性」です。ありがちな光景で「見ればわかるだろ!」は通用しません。
同様に「あの人に聞けば分かるよ」、「分からないところが有ったら聞いてね」もマクロ的には通用しません。マクロ的な解釈で言うならば、「見なくても、聞かなくてもいいように、事前に説明をしてほしい」です。こうすることで(面倒ですが)それを踏まえてマクロ化することになります。経験的に、客観性がない作業であればあるほど、マクロ化が難しい、あるいは非常に大変であると言えます。

つまり「誰でもでき」るというのは客観性のある作業となっていて、マクロ化しやすいと言えます。

最終的には経験がものをいう部分も多いですが、本ページも参考に頑張ってください。

カテゴリ:Excel上級:マクロ