Excel関数とVBAを組み合わせてツール開発するための3つのポイント
更新日:2019年11月29日
公開日:2019年10月17日
VBA(Visual Basic for Applications)とは、Visual Basicというマイクロソフトが開発したプログラミング言語をベースとし、Excel、AccessといったOffice製品で実行可能なプログラミング言語です。
最近の少子高齢化、働き方改革、2050年問題というトレンドワードに伴い、手作業からIT自動化へのシフトが求められるようになり、VBAツールやRPAツールの開発に積極的な企業は増えている時代です。
私は文系出身で元々は経理や経営企画などで事務作業を仕事にしていましたが、ITに興味があったので独学してVBAエキスパードなどの資格を取得した結果、現在ではVBAやWEBを中心としたITエンジニアの仕事が増えてきました。
ところで、VBAツールやRPAツールを開発して使い始める前は、Excel関数と手作業で表や報告書、書類などを作成していたと思います。
そして求められるIT自動化ですが、全てをVBAプログラムで実装しようとすると完成までに時間がかかるツールであっても、Excel関数を組み合わせてツール開発すると驚くほど短時間で開発できる場合があります。
このページでは、Excel関数とVBAを効率よく組み合わせてツール開発するポイントについて、実務経験者の立場からコメントします。
Excel関数とVBAを組み合わせてツール開発するための3つのポイント
目次
1.Excel関数のメリットとデメリット
ITによる自動化を進める際に、これまで使用していたExcel関数のメリットとデメリットを例示列挙すると次の通りです。
1-1.Excel関数のメリット
(1)大量データを処理する機能を短時間で実現できる
簡単な例を挙げると、セルA2からセルB1000に入力された数値の合計をC列に反映したい場合には、セルC2に「=SUM(A2:B2))」と入力したのち、C3からC1000まで数式をコピー&ペーストしてあげれば、それで実現できてしまいます。Excel操作に慣れていれば1分もかかりません。
(2)みんながExcel関数に慣れているので、Excel関数を使ったツールに抵抗感がない
VBAプログラミングと比較するまでもなくたくさんいます。
VBAツールの場合、コードを読めないので「何が起きるか分からない。操作するのが怖い」という方もいて、せっかく開発したVBAツールが使われない、という場合も考えられます。
1-2.Excel関数のデメリット
(1)処理ミスにつながりやすい
Excel上のセルに関数は反映されているので、「うっかり削除してしまった」「コピー&ペーストを忘れてしまった」「式を書き換えてしまった」といった処理ミスは起きやすいという欠点があります。
(2)Excelシートの動作が遅くなる
通常、Excelファイルでは関数の再計算について、既定である「自動」のままにします(自動でないと値を更新した場合に再計算が行われない)。
従って、Excelシート上の値を更新した場合、自動的にExcel関数が入ったセル部分も再計算され更新されますが、あまりたくさんのセルに関数を使用していると再計算が完了するのに時間がかかるため、値を更新するために作業者は再計算が完了するのを待っていなければなりません。
2.Excel関数とVBAを組み合わせてツール開発するには
結論を書くと、「Excel関数のメリットを活かし、デメリットを抑えるようにVBAツールに組み込むこと」です。
具体的なポイントは次の通りです。
(ポイント1)大量に関数を使用するような部分はVBAで自動計算する
上述の通り、あまりにたくさんのExcel関数を使用すると動作が遅くなってしまうため、そのような部分はVBAプログラム上で自動計算し、数式ではなく結果の値のみを反映するようにします。
(ポイント2)VBAツール実行後の結果とExcel関数による計算結果とのトータルチェックなどの検証機能を実装する
全てをVBAプログラムで実現してしまうと、VBAを知らない作業者は不安を覚える可能性があります。
そこで、VBAプログラムの結果が正しいかどうか確認するために、Excel関数による計算結果と比較できるような機能を実装しておきます。
例えば、合計金額や合計の処理件数などをVBAツール上で同時に計算してExcelシート上の比較表に反映します。
比較表のもう一方にはExcel関数で計算した合計金額や合計処理件数などが反映されています。
両社が同じ数値であれば、VBAツールの結果が正しいことが確認できるので、作業者の不安感も軽減できるでしょう。
設計時に、このような検証機能をどの項目で実装させればよいか、検証でどの程度の信頼性をもって確認できればよいかが肝要です。
(ポイント3)Excel関数を使用するセルにはシート保護をかけ、マーカー設定しておく
VBAで実装するよりも、Excel関数の方が簡単に実現できる場合には、処理ミスをしないように開発者側でシート保護をかけて、作業者が加工できないように設定します。
またExcel関数を使用したセルには、色付きのマーカー(塗りつぶし)で他のセルと区別できるようにしておきましょう。
まとめ
以上、Excel関数とVBAを組み合わせてツール開発するための3つのポイントについてコメントしました。
今回はExcel関数とVBAとの組み合わせに絞って説明しましたが、Excelの機能は多種多様です。他にも条件付き書式や名前の定義、フィルター、データの入力規則、グラフ、ピボットテーブル、印刷範囲設定など、VBAと組み合わせを検討する要素はたくさん存在します。
今回のコメントが皆さんのVBAツール開発に役立てば幸いです。
最後までお読み頂きましてありがとうございました。
10冊まで同時に読み放題の電子書籍サービス(200万冊以上が対象)。
PC・ITカテゴリーの対象数は7,000以上。
スキル、ノウハウ吸収や話題作りにと、ライフ・クオリティを高めてくれます。
関連記事
WinActorの良いところ悪いところ、VBAとの比較など
初心者からVBAプログラマーになるまでの書籍を紹介
他に載っていないVBAツール例
VBAの人気やRPAとの需要争奪戦もコメント
VBAは人気がある?人気がない?