思考酒後

自分に入ってきた情報を定着、深化するために文章化

MENU

【Excelマクロ】配列の考え方と使い方について


 こんにちは、masaです。

 今日は自分用のメモとしてVBAの機能の一つである配列についてまとめておこうと思います。

 

 一言でいうと、任意の関数を自分で定義して、それを呼び出すことができる機能となっています。

 

f:id:masa_mn:20181015132905j:plain

 

 

 例えば1,2,3,…10という数字を所定のセルに入力する場合は、以下のようなコードで実現することができます。

 

 

Sub 例()

Dim i as integer

For i = 1 to 10

Cells(i,1)=i

End sub 

 

 

 規則性のある数字であればCells(i,1)=iの末尾のiを関数で置き換えればいいのですが、規則性がなく、任意の数字を入力したい場合には配列を使うと便利で早くて間違いがありません。

 

 1回目が1、2回目が3、3回目が5、4回目が1、5回目が6など指定の回数で任意の数字を記憶・出力できる機能が配列になっています。

 

CASE1:直接入力

 下記のコードで配列を作ることができます。直接入力は若干めんどくさいですね。

 

Sub 直接入力()

Dim i As Integer

Dim Number(10) As Single

Number(1) = 1

Number(2) = 3

Number(3) = 5

Number(4) = 1

Number(5) = 6

Number(6) = 6

Number(7) = 7

Number(8) = 8

Number(9) = 9

Number(10) = 10

 

'確認用の出力コード

For i = 1 To 10

Cells(i, 1) = Number(i)

Next i

 

End sub 

 

 

 

 

CASE2:セル参照

 セルを参照した方がすっきりだし、たぶん間違いも少なくなるはず…

Sub セル参照()

Dim i As Integer

Dim Number(10) As Single

 

'A列の一番上から参照

For i = 1 To 10

Number(i) = Cells(i, 1)

Next i

 

'確認用の出力コード

 For i = 1 To 10

Cells(i, 2) = Number(i)

Next i

 

End sub 

  

 ポイントとしては配列と定義したものの後ろに()をつけ、()内には配列として記憶する数を入力するくらいですかね。

 

 一度配列として定義したら同じマクロ内であれば繰り返し使用ができるので、複雑な関数の構成となっている変数なんかは初期で定義して繰り返して使うのもいいと思います。