【Excel VBA】変数とは何か、配列とは何か、初心者向けに徹底解説!

Excel マクロ(VBA)

VBAのプログラミングにおいて、変数や配列は避けられません。しかし、これらの概念はプログラミング初心者にとっては意味が分かりにくいです。例えば変数であれば、”データを入れるための空の箱”といった説明が多いですが、この説明だけではイメージできません。

そこで今回は、変数と配列について、VBAを含むプログラミング初心者向けに徹底解説します。

スポンサーリンク

変数とは何か

まず、変数とは何かを説明します。、”データを入れるための空の箱“といったような説明はどういうことなのでしょうか。これは図にすると以下のようなイメージです。データを入れるために空の箱を準備し、その箱に何か好きな名前を付けます。

そして、”変数”というからには、この箱の中に入るデータがいつも同じではない、ということです。

“だからなに?”という感じでしょうか。これでは一体何をしたいのかわかりませんね。そこで、以下のような数式を考えましょう。

Z = 2X + 3Yという数式が合ったとき、データ①を箱X(変数名=X)に、データ②を箱Y(変数名=Y)に、入れることを考えてください。データ①と②が何の値かわかりませんが、何の値だったとしても、空の箱XとYを用意しておけば、あとはどのような値がデータとして入ってきても、Zを計算することができます

変数という空の箱は、数値だけでなく文字列も扱うことができます。例えば、苗字と名前を別々に入力してもらって、半角スペースを空けて連結するような作業を考えましょう。この場合、”姓”という箱と、”名”という箱を用意しておいて、それらを、半角スペースを挟んで連結するという設定をしておけば、データ①②がどのような文字列であったとしても、”田中 太郎”、”山田 花子”のように、一定の入力方法で名前を得ることができます。

なぜ型が必要なのか

さて、VBAを学んでいると、変数の”型”という概念が登場しますが、これもわかりにくい概念の1つです。変数の型を決めるというのは、”その箱にどのようなデータを入れるかを予め決めておく”ということです。

例えば代表的な例としては、文字列を入れるための”String”や、整数を入れるための “Integer” や “Long” があります。ではなぜ、このように”型”を決めることが必要なのでしょうか

例えば以下の図は、文字列を入れるための青い箱と、整数を入れるためのオレンジの箱に、それぞれ”0011“というデータを入れています。その結果、青い箱ではデータが”0011″という文字列として保存され、オレンジの箱では11という数値として保存されています。青い箱の”0011″は文字列ですので、このデータを使って計算はできません。一方オレンジの箱は数値として保存されたときに頭についていた“00”が取れてしまっていますので、00が重要な意味を持つ場合には適しません。

このように、変数の型は、そのデータをどのような目的で使うかによって決まってくるのです。

ご参考まで、実際にはプログラミング言語によって、変数の型が自動で判定されて設定されることもあります(Pythonなど)。VBAの場合はこれを手動で指定しないといけないので、手間とも言えますが、その分どのようなデータを入れたいのか明確になり、エラーを防げるという利点もあります。

スポンサーリンク

配列とは何か

続いて配列について説明します。配列については、”同じ種類のデータを順序付けて格納するための容器で、各データがインデックス(位置情報)を持つ“といった説明がされることが多いです。これも詳しく解説しましょう。

まず配列というのは、上で説明した変数(からの箱)が複数連なっているようなものを想像してください。

そして、配列が普通の変数と異なるのは、インデックス(位置情報)という”部屋番号”のようなものがついていることです。このインデックスは0から始まる点に注意が必要です。1つ目のデータは”0″番の箱に、1つ目のデータは”1”番の箱に入ります。

ではこの配列、一体なぜ使われるのでしょうか。わざわざインデックス(位置情報)が付いている複数の箱を使うということは、このインデックスを使いたいということです。具体的には、データは何が入るかわからないが、インデックスによって処理を分けたい時に有用です。例えば、以下のような苗字のランキングがあったとします。

毎年、インデックス0番~4番にどのようなデータが入るかわかりません。しかし、毎として”0″番の人に同じ処理をしたい、ということはよくあります。例えば最も獲得ポイントの多いユーザーに賞品を出すとか、最も営業成績の高い人を表彰する、といったことが感がられます。これは、予めデータがわからなくとも、インデックス(位置情報)がわかれば、処理を決めることができる、ということです。

コメント

タイトルとURLをコピーしました