初めてのプログラミングにExcel VBAを勧める理由 ☆ 単純なコードからより良い意思決定を学ぶ

最初のプログラミング環境に悩んだらExcdl VBAプログラミング
最初のプログラミング環境に悩んだらExcdl VBAプログラミング

はじめに|最初のプログラミング環境をどう選ぶか

プログラミングを始めようと思ったとき、最初に悩むのがプログラミング言語と開発環境の選択です。

Python、JavaScript、C#など、さまざまな言語があり、それぞれに特徴があります。

では、これからプログラミングを学ぼうとする人は、何を基準に最初の環境を選べばよいのでしょうか。

筆者が重視するのは、プログラムの仕組みを理解しやすく、実行した結果をすぐに確認できることです。

この観点から、筆者「理屈コネ太郎」は、すでにExcelを利用している人には、今でもExcel VBAを勧めます。

この記事で取り上げるのは、Excelの操作を記録して自動化するマクロの記録機能から一歩進んだ、自分でVBAコードを書き、プログラムを作成する方法です。

筆者の独断と偏見を交えながら、Excel VBAを勧める理由と、その魅力について解説します。

1.Excel VBAが初心者に適している理由

① 使い慣れたExcelが開発環境になる

プログラミングを始める際、最初の障壁となりやすいのが開発環境の構築です。

Excel VBAなら、すでにデスクトップ版Excelを使用している人は、追加の開発ソフトウェアを用意することなく始められます。

Excelの「開発」タブを表示し、Visual Basic Editorを開けば、コードを記述して実行する環境が整います。

VBAはWindows版とMac版のデスクトップExcelで利用できます。Web版Excelを使用している場合は、VBAの作成・実行にデスクトップ版が必要です。

作成したVBAプログラムをブックに保存する際には、マクロ有効ブック(.xlsm)形式を使用します。

そして、Excel VBAの手軽さは、普段から使っているワークシートを、そのままプログラムの入出力に利用できることにあります。

② プログラムの動作と結果を目で確認できる

筆者がExcel VBAを勧める最大の理由は、ここにあります。

プログラミングでは、入力するデータ、実行する処理、出力される結果を考える必要があります。

Excelには、これらを目に見える形で扱えるワークシートが最初から用意されています。

例えば、セルに条件を入力し、VBAで計算し、結果を別のセルに書き出すことができます。計算結果を表やグラフで表示することも簡単です。

つまり、入力、処理、出力、結果の観察を、一つの環境で行えます。

さらに、条件を変更してプログラムを再実行すれば、結果がどのように変化するかを直接確認できます。

プログラミング初心者にとって、書いたコードと実行結果の関係が見えやすいことは、学習を進めるうえで大きな助けになります。

③ プログラミングの基本構造を学べる

Excel VBAでは、他のプログラミング言語にも共通する基本的な考え方を学べます。

  • 変数を使ってデータを保持する

  • If…Then…Elseで条件に応じた処理を行う

  • For…NextやDo While…Loopで処理を繰り返す

  • 関数やプロシージャを使って処理を整理する

  • オブジェクトのプロパティやメソッドを利用する

Excel VBAでは、Workbook、Worksheet、Rangeなどのオブジェクトを操作するため、オブジェクト指向の基本的な考え方にも触れられます。

VBAにはクラスを定義する機能もあります。継承などにはVBA独自の制約がありますが、オブジェクトを通じてデータと処理を扱う経験は、他のプログラミング言語を学ぶ際にも役立ちます。

最初にExcel VBAで基本構造を理解しておけば、その後に別の言語へ進む際にも応用できます。

④ 独学のための資料が豊富にある

Excel VBAは長年にわたって使われてきたため、初心者向けの書籍やWeb上の解説が豊富にあります。

また、Excelのマクロ記録機能を使えば、実際の操作がどのようなVBAコードに変換されるかを調べることもできます。

Visual Basic Editorには、プログラムを一行ずつ実行したり、変数の値を確認したりする機能も備わっています。

自分でコードを書き、実行し、動作を確認しながら学習を進められる環境が整っています。

2.Excel VBAで確率的な現象をシミュレーションする

Excelは表計算ソフトとして広く知られていますが、VBAを組み合わせると、その活用範囲は大きく広がります。

なかでも筆者が面白いと感じるのは、繰り返し計算を自分で設計できることです。

例えば、ある条件で起こる出来事を調べたいとします。

一度だけ計算するのであれば、Excelの数式でも十分でしょう。

しかし、乱数を発生させ、条件を変化させながら、同じ処理を数千回、数万回と繰り返したい場合はどうでしょうか。

VBAでプログラムを作れば、条件分岐や繰り返し処理を組み合わせて、大量の試行を自動的に実行できます。

モンテカルロ・シミュレーション

例えば、サイコロを1万回振るプログラムを作り、各目が出現する頻度を調べることができます。

試行回数を増やしながら、各目の出現割合がどのように変化するかを観察することもできます。

これをさらに発展させ、複数の変数に確率分布を設定し、乱数を使って何度も計算すれば、さまざまな結果が生じる頻度を調べられます。

このように、確率的な試行を繰り返して数値的な結果を得る代表的な手法が、モンテカルロ法です。

マルコフ連鎖

もう一つ、面白いのがマルコフ連鎖です。

マルコフ連鎖は、現在の状態によって次の状態へ移る確率が決まる仕組みです。

例えば、天気を「晴れ」と「雨」の二つの状態に分け、今日が晴れの場合と雨の場合で、翌日の天気が決まる確率をそれぞれ設定します。

こうした確率を使えば、天気が日々どのように変化するかをシミュレーションできます。

マルコフ連鎖では、次の状態への移行確率を現在の状態に基づいて設定することが基本になります。

このような状態の変化をVBAで繰り返し計算すれば、長期的に各状態がどの程度の割合で現れるかなどを調べられます。

モンテカルロ法が確率的な試行を繰り返す計算手法であるのに対し、マルコフ連鎖は状態の移り変わりを表す確率モデルです。

両者を組み合わせれば、マルコフ連鎖に従って変化する現象を、モンテカルロ法で繰り返しシミュレーションすることもできます。

関連記事:Excelの凄さを体験せよ|乱数とVBAで広がるマルコフ連鎖とモンテカルロの世界

ワークシート上に条件を並べ、VBAで計算を繰り返し、得られた結果を分析する。

これだけでも、Excelはかなり自由度の高いシミュレーション環境になります。

3.プログラミングで意思決定の構造を明らかにする

Excel VBAの面白さは、計算を自動化することからさらに広がります。

例えば、自宅を購入するか、賃貸住宅に住み続けるかという問題を考えてみましょう。

住宅価格、住宅ローン金利、賃料、維持管理費、将来の売却価格、居住期間など、判断に関係する条件は数多くあります。

これらを変数として設定し、条件を変化させながら計算すると、購入と賃貸それぞれの経済的な結果を比較できます。

さらに、将来の住宅価格や金利などに確率分布を設定すれば、さまざまなシナリオでの結果を調べられます。

結果の平均値だけでなく、ばらつきや、特定の結果が生じる確率も確認できます。

では、将来の条件が変化するなかで、その時々に選択をやり直せるとしたら、どうでしょうか。

意思決定を延期できることの価値

例えば、「今すぐ住宅を購入する」という選択肢に加え、「当面は賃貸住宅に住み、将来の状況を見て購入を判断する」という選択肢を考えます。

将来、住宅価格が下落した場合には購入し、価格が高騰した場合には賃貸を続けるという判断も考えられます。

このような選択には、将来の情報を得てから行動を決められるという柔軟性があります。

一方、購入を待つ間には賃料が発生し、価格上昇によって購入機会が不利になる可能性もあります。

そこで、将来の住宅価格や金利などの変化に加え、それぞれの時点で選択できる行動、その費用と便益、時間の経過による価値の違いをモデルに組み込みます。

そのうえで、当初から購入を決める場合と、将来の状況に応じて購入するかどうかを決める場合とを比較します。

これは、将来の状況を見て判断できる柔軟性に、どの程度の経済的価値があるかを考えるリアルオプション分析につながります。

Excel VBAでも、このようなモデルを作成して分析することが可能です。

自分で決められることと、不確実なことを分ける

こうしたモデルを作る過程では、問題を構成する要素を整理する必要があります。

自分で選択できる行動は何か。

自分では決められず、将来の状況によって変化する条件は何か。

そして、それぞれの結果を何を基準に評価するのか。

住宅の例でいえば、購入するか待つかは自分で選べます。一方、将来の住宅価格や市場金利には不確実性があります。そして、経済的な比較を行うなら、支出や資産価値などを適切な評価基準に基づいて比較します。

選択できる行動、不確実な条件、結果を評価する基準。この三つを整理することで、意思決定の構造が見えてきます。

これは、プログラミングを学ぶことの、もう一つの重要な価値だと筆者は考えます。

自分の考えをプログラムにするためには、その考えを明確な条件と手順に分解する必要があります。

何を変数とするのか。どのような場合に処理を分岐させるのか。何を結果として評価するのか。

こうしたことを一つずつ決めていくと、それまで漠然と考えていた問題が、検討可能な形に整理されていきます。

そして、プログラムを実行すれば、設定した前提からどのような結果が導かれるのかを確認できます。

結果が予想と異なれば、コードや前提条件を見直し、もう一度試すことができます。

分析結果の信頼性は、モデルの妥当性や前提条件、プログラムの正確さによって決まります。モデルを検証し、条件を変更して結果を比較する作業も、プログラミングの重要な一部です。

最終的な意思決定には、数値で表現しにくい価値観や感情、信念も関わります。

それでも、選択肢を整理し、条件によって結果がどう変化するかを理解しておくことは、判断の質を高める助けになります。

筆者にとってプログラミングは、こうした思考の過程を支える道具でもあります。

4.2026年現在もExcel VBAを勧める理由

現在は、プログラミングを始めるための環境も大きく進化しています。

例えばPythonは、数値計算、データ分析、機械学習、Webアプリケーションなど、幅広い分野で利用されています。

Google Colabを使えば、ブラウザ上でPythonのコードを書いて実行でき、複雑な環境構築を行うことなく学習を始められます。

さらに、Excelにも新しい仕組みが加わっています。

Office Scriptsは、TypeScriptを基盤としてExcelの操作を自動化する仕組みです。対応するExcel環境で利用でき、Power Automateと組み合わせたクラウド上の処理にも適しています。

Python in Excelでは、対応するMicrosoft 365環境で、Pythonを使ったデータ分析や可視化ができます。Pythonの計算はMicrosoftのクラウド環境で実行されるため、インターネット接続が必要です。

これらの利用条件や機能は、Excelの種類や契約内容によって異なります。

プログラミングを始める際に必要な準備は、以前に比べてずいぶん簡単になりました。

そのなかで、Excel VBAを最初の学習環境として勧める理由は、普段から使っているExcelのデータや操作を、そのままプログラミングの対象にできることです。

Excelのセルやワークシートは、初心者にとってなじみのある存在です。

そこに変数、条件分岐、繰り返し処理を加えるだけで、自分の関心に合わせたプログラムを作れます。

また、現在は生成AIを使ってコードの書き方を質問したり、エラーの原因を調べたり、自分の考えた処理をコードに変換してもらったりすることもできます。

こうした技術を利用する場合にも、プログラムの基本構造を理解していることは役立ちます。

AIが提示したコードを読み、変数や処理の流れを確認し、実行結果が自分の意図と合っているかを検証できます。

コードを作るための手段が増えるほど、何を実行させたいのかを明確にし、その結果を評価する能力が重要になります。

Excel VBAは、その能力を身近な題材で養える学習環境の一つです。

5.Excel VBAの欠点と限界

Excel VBAには、多くの利点がある一方、用途による限界もあります。

特に、大規模なデータ処理や高速な数値計算では、処理速度やメモリ、Excelのワークシートの制限が問題になることがあります。

繰り返し計算でも、セルへの読み書きを大量に行う場合などは処理時間が長くなるため、配列の利用など、プログラムの作り方に工夫が必要です。

大量のデータを蓄積して検索・更新するデータベースの構築には、専用のデータベース管理システムが適しています。

Webサービスや大規模な業務システム、複数人で共同開発するソフトウェアなどでは、それぞれの用途に適した言語や開発環境が選ばれています。

Excel VBAが特に力を発揮するのは、Excelを中心とした作業の自動化や、個人で扱う計算・分析などの分野です。

また、VBAの実行にはセキュリティ上の注意も必要です。

VBAにはコンピューター上のファイルなどを操作できる機能があるため、外部から入手したマクロについては提供元と動作内容を十分に確認することが重要です。

Microsoftも、インターネットから入手したファイルに含まれるマクロの実行を、原則としてブロックする仕組みを導入しています。

こうした特徴を理解したうえで用途を選ぶことが、Excel VBAを有効に活用するための基本になります。

結論|プログラミングを学び、プログラミングで考える

世界を確率論的に捉え、さまざまな可能性を考えながら判断したい人にとって、Excel VBAは今でも魅力的な道具です。

身近な問題を自分でモデル化し、条件を設定し、繰り返し計算を行い、その結果を観察できます。

そして、プログラミングを学ぶ過程では、自分の考えを変数や条件、処理手順として明確にすることが求められます。

ここに、プログラミングの本質的な面白さの一つがあると筆者は考えます。

最初は、プログラミングを理解するためにExcelを使います。

ところが、プログラムを書いて実行できるようになると、今度は自分が考えたい問題を理解するためにプログラミングを使うようになります。

自分の考えた論理をコンピューターに実行させ、その結果を使って、自分の考えをさらに深めることができるのです。

頭の中で考えていたことがプログラムになり、実際に動き、その結果が目の前に現れる。

ときには予想どおりの結果が得られ、ときには思いがけない結果に出会います。

その一つひとつが、新しい疑問や発見につながります。

Excel VBAは、その体験を身近なワークシート上で実現できるプログラミング環境です。

これからプログラミングを始めようと考えていて、すでにデスクトップ版Excelを使用しているのであれば、ぜひVBAで小さなプログラムを一つ作ってみてください。

自分で考えた論理が、自分の手を離れて動き始める。

そこから、プログラミングの面白い世界が広がっていくと思います。

当サイト内他の記事への移動は下記より

理不尽社会を強くサバイブ|元医師が過去の自分に送りたい人生のヒント集
当サイト内記事のトピック一覧ページ 【最上位のページ】
管理人の自己紹介は理屈コネ太郎の知ったか自慢|35歳で医師となり定年後は趣味と学びに邁進

作成者: 理屈コネ太郎

元消化器内視鏡医・産業医。現在は社会・人間行動・構造分析をテーマに執筆活動を行う。定年退職後はヨット・ボート・クルマなど趣味と構造研究の日々を過ごす。

コメントする

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です