2022年8月21日日曜日

[エクセルVBA]配列の基本!配列を宣言しループで処理する

event_note8月 21, 2022

配列とは

同じ種類の変数の集合体です。前から順番に0、1、2、3…と番号が振られており、データをセットしたり、使うときは番号で指定します。

0番目のデータを使うときは「ary(0)」のように指定します。下の図は、配列ary(3)に数値100、200、300、400を代入するイメージです。

コーディングすると以下の通りです。

サンプルコード

Sub Hairetsu() Dim ary(3) As Integer ary(0) = 100 ary(1) = 200 ary(2) = 300 ary(3) = 400 End Sub

サンプルコード解説

配列の宣言 Dim ary(3) As Integer

①のDimは変数を使えるようにするための宣言です。この宣言以降、aryという配列を使えるようになります。

②は配列の名前です。

③で配列内にいくつ変数を持つか指定します。例では、4つ(0番~3番)となります。添字(()内の数字)通りの3つにならないことに注意しましょう。配列内の変数の数は添え字+1個です。

④As 型名 で配列の型を表します。今回は数値として使いたいので型名をIntegerとします。Integerは数値の変数で-32,768 ~ +32,767までの値を代入することができます。

配列への代入

最初に説明した、4つの箱にデータをいれているイメージをコーディングしたものになります。

配列の値を加算する

ここまでで、配列に数値データを設定しました。今度は「配列内のデータそれぞれに100を加算する」処理を行います。

サンプルコード

 ary(0) = ary(0) + 100 ary(1) = ary(1) + 100 ary(2) = ary(2) + 100 ary(3) = ary(3) + 100

解説

配列の0番目に、100を加えて配列0番目に戻す。処理をしています。配列の1番目から3番目も同様に処理しています。

1行目の処理を絵にすると、このようなイメージですね。

 

しかし、4つの処理を1行ずつかくのは少し手間です。4つだとまだ楽ですが、ary(1000)の時に処理を1001回書くわけにはいきません。そんな時にループ処理を使います。

配列の計算をループで処理する

サンプルコード

 For i = 0 To 3 ary(i) = ary(i) + 100 Next

解説

先ほど4行書いていた処理が、「ary(i) = ary(i) + 100」という1行にまとめることができました。

「 For i = 0 To 3」は i を0から3まで増やしていく という意味です。

「ary(i) = ary(i) + 100」の i は「 For i = 0 To 3」で指定される i (0~3)に置き換えて実行します。

なので、

 

iが0のとき ➡ ary(0) = ary(0) + 100 を実行

iが1のとき ➡ ary(1) = ary(1) + 100 を実行

iが3のとき ➡ ary(3) = ary(3) + 100 を実行

となり、1行ずつコードを書いた時と同じ処理になります。

このように、配列を使うとデータに連続性が出るのでループで同じ繰り返し処理をすることができて便利です。配列とループ処理は非常に相性がよいのです。