マクロ・VBAの基礎知識

エクセル関数とマクロ・VBAの7つの違いとは?

18/02/06

マクロに興味がある、これからマクロ習得しよう、という方の中には、エクセル関数とマクロの違いがよくわからないという方がいると思います。どちらもエクセルに標準で備わっている機能ですが、それぞれ特徴があり使い勝手は大きく異なります。

ざっくり説明すると、「エクセル関数は人間が行っているコピペ作業や電卓計算を補助する機能」であり、「マクロは手順書を書いてエクセルに仕事をさせる機能」です。エクセル関数は「車」で、マクロは「自動運転」ともいえます。

たとえば納品書を発行するときに、エクセル関数を使えば、その一部を作ることはできますが、自動で納品書を発行することはできません。しかし、マクロを使えば納品書発行や印刷、メール添付・送信を自動化できます

マクロを使える、使えないで業務の生産性に大きな差が生まれます。このページではエクセル関数とマクロの機能の違い、そこから生まれる違いを解説していきます。

エクセル関数とマクロの7つの違い

エクセル関数とマクロの違いをまとめました。そもそもマクロ・ VBAって何? という方はエクセルマクロ・VBAとは? エクセルを自動化する機能ですをご覧ください。

項目 エクセル関数 マクロ・VBA
1. 速さ 関数が入ったセルが大量にあると、まともに仕事ができないほど遅くなる 高速・軽量・快適
2. メンテナンスしやすさ 複雑な関数になると修正が大変 構造化できるのでメンテナンスしやすい
3. 外部連携 閲覧のみ
  • 外部データの読込み書込みができる
  • Outlook, PowerPointなど他のアプリを操作できる
  • Windows上のファイルやフォルダを扱える
4. 手軽さ
  • 比較的簡単
  • 他の人でも修正できることが多い
  • 手軽な反面誤って関数を消してしまうことも
  • VBEという新しいスキルが必要
  • スキルがない人は修正できない
  • 誤って消されにくい
5. エクセルに対する操作 セルに色塗る、罫線を引く、シートの名前を変える、といった操作はできない エクセルに対するあらゆる操作ができる
6. 業務に与えるインパクト ふつう
  • 人力で3日がかりの仕事がワンクリックで終わるようになる
  • 従業員50名の会社で、年間数百万のコストダウン効果
7. あなたに与えるインパクト エクセルが得意な人になれる
  • IT系のスキルアップ
  • 業務改善できる人になる
  • あなたの評価が上がる
  • もっと面白い仕事を任される
    という好循環が生まれる

 

 

1. 速さ

エクセル関数の場合

関数が入ったセルに比例して遅くなる

大量に関数が入ったファイルを開く、編集する、というときに数秒間待たされた経験がある方も多いのではないでしょうか。標準設定ではファイル開いたり、セルを編集したりするときに、セルに入っている関数は毎回再計算されるため時間がかかります

たとえば、労務管理では多くの関数を使って労働計算します。「人数×日数×計算項目」の関数ができ上がります。

従業員が50人の会社であれば1年間で、50人×250日×10項目=125,000の関数がセルに入ります。1つのセルを編集するだけでも毎回10秒以上待たされます。私がマクロを習得しようと思った理由の1つです。ここまでいかなくても、関数の数に比例してエクセルが遅くなります。

 

マクロの場合

再計算しないので高速

一方、マクロはプログラムを実行したときだけ計算されます。そのため、ファイルを開く、セルを編集する、という場合でも再計算しないので高速です。

 

2. メンテナンスしやすさ

エクセル関数の場合

複雑な式は修正困難

複雑な計算はIf関数を使うことが多いと思いますが、難解な式になりがちです。たとえば、労働時間計算時の休憩時間を計算する場合、下図のような複雑に式になることがあります。

これは私がエクセルマクロを覚える前に、労働時間計算時に実際に使っていたものです。この関数の中のどこか1か所を直そうと思ってもかなり複雑で、修正困難だったのよく覚えています。

なぜ修正が困難になるかというと、構造がわかりにくく、「このIf関数はどこからどこまで影響が及ぶのか?」を読み解くのに時間がかかるからです。業務は常に動いていますので関数を一度作ったら終わり、とはいきません

メンテナンス作業が発生するつど、難解な式を読み解かなければならないのは非効率です。メモすればいいとか、難解な式を読み解くスキルを身につければいい、という考え方もあるでしょうが、そのために時間を使うくらいならマクロを習得した方が生産的ではないでしょうか?

 

マクロの場合

条件分岐がわかりやすい

一方、マクロは構造を分かりやすく書くことができます。下記のプログラムを日本語に翻訳すると「雨が降ったら傘をさし、降水確率が70%以上だったら傘を持って行き、それ以外は手ぶらで行く」という意味です。

Sub 傘を持っていくかの判断()
    If 雨が降ったら Then
        傘をさす
    ElseIf 降水確率 >= 0.7 Then
        傘を持っていく
    Else
        手ぶらで行く
    End If
End Sub

 

これをエクセル関数で書くと、セルの中に

=IF(雨が降ったら,傘をさす,IF(降水確率 >= 0.7,傘を持っていく,手ぶらで行く))

と書きます。

 

マクロの方が構造が分かりやすいと思いませんか? メンテナンスのしやすさは効率よく業務を進める上で重要です。

 

3. 外部連携

エクセルの場合

データを取り込むだけ

もし外部のデータを参照したいのであれば下図のようなツールを使います。

データタブの中にはデータ取得のための道具が揃っています。データベースやテキストファイル、Web(インターネット)上のデータを取得できます。

ただし、これはデータを取得するだけ。追記、編集はできません。データを取得し、そのデータを使って一連の処理をする、といった連続した作業もできません。

 

マクロの場合

外部データを追記、編集できる

マクロを使うとアクセスなどのデータベース、CSVなどのテキストファイルの追記や編集、インターネット上のデータ送信・受信ができます。もちろん一連の作業をマクロに登録しておけば作業が楽に終わります。

Windows上のファイルを扱える

マクロは、Windows上のファイルやフォルダを扱えます。エクセルの活躍の場が一気に広がります。たとえば商品や部品リストから商品画像や図面の画像ファイルを開けます。他にも条件に従って、別々のフォルダに分類されたエクセルファイルを開いて中のデータを参照する、といった柔軟な処理ができます。

 

4. 手軽さ

エクセル関数の場合

手軽な反面ミスが起きやすい

エクセル関数は手軽です。日常的にエクセルで仕事をしている方のほとんどは何らかの関数を使っていると思います。そのため、別の人が作った関数でもその気になれば修正することができます。その反面、せっかく作った関数を誤って消してしまう可能性が高い、というデメリットもあります。

 

マクロの場合

関数は軽自動車、マクロは特殊車両

関数が軽自動車だとしたら、マクロは特殊車両です。ちょっとしたお使いは関数で充分です。しかし、遠くに行こうとしたり、荷物をたくさん運んだり、スピードが必要だったりしたときは、トラックやレーシングカーの方が便利。でも特殊車両を運転するにはちょっと訓練が必要。こんなイメージです。

間違ってマクロを消してしまう可能性は低い

マクロを使える方は比較的少数派です。そのため別の人が誤って消してしまう可能性は低いです。必要であればマクロを編集できないようにパスワードをかけることもできます。

 

5. エクセルに対する操作

エクセル関数の場合

関数が影響を与えられるのはセルの値のみ

エクセル関数では次のような事はできません。

  • セルに罫線を引く、色を塗る
  • フォントを変える、フォントの色を変える
  • シートの名前を変える、シートを追加する
  • グラフを作る
  • ピボットテーブルを作る
  • 新しいファイルを作る

関数ができるのは、セルの値を変えることだけ。影響範囲は、その関数が入力されているセルに対してのみです。

 

マクロの場合

マクロの影響範囲は大きい

マクロを使えば、あなたが「普段エクセルに対して行っている、あらゆる操作を自動化できます。次のようなことも思いのままです。

  • ある条件が満たされているかチェックして、チェックが終わったところに色を塗る
  • 定期的に作らなければならない売上報告などのグラフを自動で作る
  • 必要なデータだけを抽出し、新たにシートを作成して抽出結果を書き出し、そのシートに名前をつける

 

6. 業務に与えるインパクト

エクセル関数の場合

頑張れば「システムのようなもの」を作れるが…

関数を組み合わせれば、多くのことができます。集計、分析などはもちろんのこと、取引番号をキーにして情報を抽出し、請求書や納品書などを作れます。

私がエクセル関数とピボットテーブルだけで構成した最大のものは、労務・勤怠管理システムです。日々の労働時間を計算し、給与計算に必要な労働時間を求める、というものです。

ただ、ここまでお伝えしてきたように、マクロに比べると多くのことはできません。「システム」と呼ぶには少々頼りないものでした。

 

マクロの場合

インパクトは使い方次第

マクロ使えば業務に大きなインパクトを与えることができます。

ITmediaから引用

※強調は当サイト

私の例をあげると、在庫管理業務で午前中いっぱいかかっていた仕事をワンクリック(数秒)で終わるようにしたり、設計ミスによる手戻り材料費、工賃を年間数百万円削減したりしました。

こうした事例はマクロを使えるようになると、(会社の規模、業種にもりますが)ありふれたものになります。マクロを使っていない会社や業務には大きな可能性が埋もれています

 

7. あなたに与えるインパクト

エクセル関数の場合

ふつう

エクセル関数を使いこなしてバリバリ業務をこなせる方は大勢いらっしゃいます。あなたの身近にもきっといらっしゃるでしょう。どのようなインパクトがあるのか、だいたい想像がつくと思います。

 

マクロの場合

人生が変わるかも

ここまでご紹介したように、マクロは関数だけではできない多くのことができます。この道具をうまく使いこなせば、あなたの人生に大きな影響を与えるかもしれません。

  • 残業がなくなる
  • 単純な繰り返し作業がなくなる
  • ITに詳しくなる
  • 営業やマーケティングなど、より付加価値の高い業務に使える時間が増える
  • 業務改善できる
  • 生産性が上がる
  • 評価が上がる
  • 社内のシステム、情報分野で圧倒的な存在になる
  • 私生活が充実する

私は転職に失敗して定職がない時期が2~3年あり、社会的にはニートでした。ニートは多くの方がイメージするような気楽なものではなく、自尊心を傷つけまくる辛い毎日でした(今にして思えば甘えはありましたが…)。恥ずかしくて友達に会えない、同窓会や結婚式には当然行けない、自分には価値がない、この世から消えてしまいたい。

そんな人間でしたが運良く就職でき、必死でエクセルマクロを習得、業務を改善しまくりました。数年後には1部上場企業の社長の前でプレゼンするまでになったのです。少なくとも私の人生には計り知れない影響を与えました。

エクセルマクロ・ VBAはエクセルに触れる機会がある方には最高の道具です。その道具をうまく使いこなすことで、あなたの人生に大きな影響を与えるかもしれません。

 

まとめ

エクセルマクロ・VBAは関数だけではできない多くのことを実現できる道具です。この道具をうまく使いこなすことで、業務改善、生産性向上、評価が上がる、私生活が充実する、人生が変わる、という効果があります。

もしあなたが、エクセルマクロに少しでも興味が出たら挑戦することおすすめします。

 

 

エクセルプログラミング講座開講中

VBA導入編 (1:17)は無料プレビューできます

詳しくはコチラ

 

-マクロ・VBAの基礎知識

© 2020 デスクワークカイゼン.com