機能・関数・VBA


miracleapplicationExcel は表計算ソフトウェアとして20年以上の歴史を持つ「奇跡のアプリケーション」です。その歴史故に覚えきれないほどの多くの機能が蓄積されています。そのため、初心者にとって習得することは果てしなく長い道のりのように感じられるでしょう。

Excel 上級者への道のりはたしかに容易ではありません。しかし、業務で利用する Excel を考えた場合、この20年以上に渡って蓄積されたすべての機能を覚える必要はありません。

また、Excel を業務で使いこなすのであれば、「機能」「関数」「VBA」それぞれを知っているべきと言えます。それぞれについて完璧に覚える必要はありません。実務で必要な基礎的なところを抑えることにより Excel が本来持っているポテンシャルを引き出すことが可能になります。

Excel3Excel の膨大な機能は大きく3つの要素に分類することができます。

  • 機能:リボンやショートカットから操作できる機能全般であり、セルの書式の設定や並べ替え、オートフィルターといったセル操作、テーブルやピボットテーブルといった分析機能、CSV ファイルのインポートや別形式での保管などのファイル管理機能など、Excel そのものになります。
  • 関数:ワークシート関数として搭載され、セルの中の「数式」で使用し、数字の計算補助のみならず、文字列の操作などを提供し、ワークシートに入力されたデータの処理を支援します。
  • VBA:VBA またはマクロ。Excel での計算処理、操作を VBA (Visual Basic for Applications) で記述し、正確かつ繰り返し実行できるようにします。VBA は処理を記述するためのプログラミング言語であり、マクロ機能は処理を自動化する Excel の機能のひとつですが、VBA/マクロともに Excel の処理を自動化するという同意に扱われることが多いです。

機能と関数とVBAは決して独立しているものではありません。むしろお互いを補完しあう場面も多々あります。
長年 Excel を使いこなしているユーザーの中には「私は VBA はわかりませんが、Excel は得意です」という方もいます。また逆に「Excel はよくわかりませんが、VBA は得意です」という方もいます。
これは非常に「不幸なこと」と言わざるを得ません。たしかに同じ結果を出すために VBA を使わずに処理したり、逆に VBA のみで結果を出すことは可能です。しかし、本来 Excel が持っている標準的な機能を使わず、無理やり関数だけで処理する、もしくは、無理やり VBA だけで処理することで、そのブックが何をやっているかわからないような可読性のない、トリッキーな仕組みのものが少なくありません。

complexたとえば、数百、数千件の行がある表があり、そこから該当する行だけを取り出すことを考えてみましょう。

機能だけでやるのであれば「オートフィルター」を使い、オートフィルターの「検索」機能を使えば、該当する行の絞り込みが可能です。機能の「オートフィルター」と「絞り込み」を知っていれば、、、ということです。

これを関数でやろうとすれば、VLOOKUP や MATCH、INDEX を使って該当する行の特定が可能です。

もちろん、VBA はこのような処理は得意中の得意です。

ここだけを考えると、どれも一緒、むしろオートフィルターの「機能」だけ知っていればいいと思われるでしょう。

しかし、みなさんの実務を想像してください。みなさんの業務は、表の中から行を絞り込んで終わりですか?絞り込んだ後で、それらの行をコピーして他のワークシートに貼り付け、提出用のブックを作成していませんか?
また、その絞り込みの作業が月末や月初に1度、年間に12回、もしくは週末に、というような繰り返しではありませんか?そして正確性を求められ、対象となるブックは1つではなく複数ありませんか?これをオートフィルターで同じことを何度も繰り返すムリと、手作業による設定ミスのムラが発生していませんか?大量データやブック、正確な繰り返しが求められるのであれば、機能ではなく関数や VBA を選択するべきです。

逆に繰り返しの作業ではなく、その場限りの確認やチェックであれば、機能をフル活用し、その時その時で適切な処理をするのがいいでしょう。そのために VBA でマクロを作る、ワークシート関数を使うことはムダです。

このように適所適材で Excel の3つの要素を使いこなすことが「実務で利用する Excel の上級者」です。