新刊ピックアップ

なぜExcel VBAで思い通りのプログラムが書けないのか

この記事を読むのに必要な時間:およそ 1 分

Excelのシート上にあるボタンをプチっと押すと,数十万のデータの中から重複しているキーワードを抜き出す。何十人,何百人の健康診断の数値データを解析し,保健指導レベルを個々に算出する。このような処理をするVBAプログラムが思い通りに作成できれば,スカッとしますよね。

いまや,業務には欠かせない存在のExcel。その強力な機能であるVBAを使いこなせるようになれば,仕事の範囲はますます広がっていくでしょう。

そんなExcel VBAの特徴のひとつとして,利用者層が挙げられます。CやC++,Java,PHPのようなプログラム言語は,プログラマやSEといったIT技術者が利用するツールであるのに対し,Excel VBAは,業務でExcelを日常的に利用する非技術者が,関数では実現できない複雑な処理をさせるために,スキルを習得していることが多いのではないでしょうか。

書籍やネットで調べたり,詳しい人からVBAを学んだりして,何とかVBAでプログラムを組めるようになった方や,スクールに通って基礎からしっかり学んだ方でも,⁠思うように業務に活かせていない」と悩んでいる方は少なくないはずです。

何が原因なのでしょうか。それは,業務プログラムを作るには,プログラム言語の構文や,決まり事を覚えるだけでは,やりたいことをコーディングするには不十分だからです。

非技術者だからVBAを使いこなせないわけではありません。業務プログラムを作るための「発想力」や,全体をデザインする「論理的思考」が身に付いていないから,せっかくのVBAスキルを活かせていないのです。

IT技術者のプログラマは,文字通り,来る日も来る日もプログラミング作業に追われています。その圧倒的な作業時間の中で,自然と実現したい処理を,どうコーディングすればいいかの発想力が磨かれていきます。

しかも,そもそもプログラマになろうと思った方の多くは,論理的思考の基礎が,備わっているのかもしれません。

では,非技術者はプログラミングすることは難しいのでしょうか。答えは「ノー」です。発想力と論理的思考はスキルなので,学んで身に付けることが可能です。

発想力を身に付けるには,ある程度の経験が必要であり,時間がかかります。そこで,さまざまな例題を通して,どう発想力を身に付けていくか,どんな風に取り組んでいけばいいのかを学ぶことが有効です。

Excelの関数も,それぞれはどんな処理をする関数なのかわかっていても,組合せ次第で複雑な業務に対応させている人と,そうでない人がいます。関数の使い方だけでなく,データの持ち方などを含めて,柔軟な発想をする人は,さまざまな工夫をすることでしょう。

発想力を高めるには,わかりやすく説明できることが重要であり,図を描くなどは考える助けになります。一見規則性がないように見えるデータの並びから,規則性を見い出すことも必要になるかもしれません。

そして,もっとも重要な点は,どんな結果が欲しいかを明確にすることです。プログラム的に言うと「Outputを決める」という言い方になります。プログラマなどは,この点に関しては,徹底的に鍛えられます。どんな結果を出すかが決まらないと,プログラム作成に取り掛かれません。そもそも,プログラムの使用者や,社内のメンバーが欲しい結果をプログラムによって実現するわけで,言ってみればOutputありきです。

対して,Inputは必要なデータや人の操作による要求であり,InputからどうOutputを考えるかが,プログラム化,すなわちコーディングそのものです。これを念頭に置けば,IT技術者でなくとも何を考えればいいかが,わかるのではないでしょうか。

プログラムは正しく動くこと,正しい結果が得られることが大前提ですが,作り手のスキルにより操作性,見た目,処理速度などに差が出ます。VBAの経験を積み,よりよいプログラムを作成できるようになりたいものですが,まずは,業務に活かすべく,どうすればやりたいことをプログラム化できるかを学んでいきましょう。

著者プロフィール

田中徹(たなかとおる)

開発案件やコンサルに携わる一方で,ITリテラシーをはじめ,ExcelやExcel-VBAの研修も数多く手掛ける。
技術者向けには,コミュニケーションスキルの重要性,特にヒアリングスキルに重点を置いたセミナーも行う。