初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

初心者のためのExcel エクセルマクロVBA入門-配列に配列を入れる

今日はもう少し配列について突っ込んでいきたいと思います。今日配列の配列です。


( ゚д゚)アァ・・・もう無理・・・



大丈夫です。とりあえず、一番簡単な2つ構造だけ押さえればVBAの世界ではとりあえずやっていけると思います。なぜなら。。。

配列に配列を入れるとエクセルの表そのものだから!

です。

1つの変数に配列をまとめて入れてそれをまた配列にする。


とりあえず、一番VBAの案件でかなりの割合であるのが・・・

CSVやExcelファイルの取込


これです。大体、受注のデータだったり、発注のデータだったりしますが、列ごとに日付とか商品とか、数量とか、金額とか書いている「表」を取り込んで、加工してとか、、、そういう感じですよね。
それを取り込むのに役に立つのが2次元の配列なんです。

表で考えるとわかりやすいと思います。

f:id:drumer2sh:20131129104145p:plain


図のように横に向かって1つのデータが並んでいます。これは1つの配列として扱います。
要するに配列変数strYokoに

strYoko(0) = セルA1のデータ
strYoko(1) = セルB1のデータ
strYoko(2) = セルC1のデータ
strYoko(3) = セルD1のデータ

・・・
・・・
・・・


という感じですよね。これで、配列strYokoに1行のデータが入りました。これが、行ごとにたくさんあるわけです。セルA2~の2行目のデータ、セルA3~の3行目・・・以下4行目、5行目・・・と続きます。これを今度は縦方向の配列に格納する分けです。
つまり・・・

横1列の配列strYokoをさらに縦配列strTateに格納する。

ということになります。言葉で説明してもわからないと思うので・・・


f:id:drumer2sh:20131129104147p:plain


こんなイメージです。さらに、書いてみると・・・


strTate(0) = strYoko1行目の配列
strTate(1) = strYoko2行目の配列
strTate(2) = strYoko3行目の配列
strTate(3) = strYoko4行目の配列


という形になります。最終的にstrTateには・・・

strTate(0)
  →strYoko(0)
  →strYoko(1)
  →strYoko(2)
  ・・・
  ・・・
strTate(1)
  →strYoko(0)
  →strYoko(1)
  →strYoko(2)
  ・・・
  ・・・
strTate(2)
  →strYoko(0)
  →strYoko(1)
  →strYoko(2)
  ・・・
  ・・・

となります。ちょうど階層構造のようなイメージです。箱に配列の箱をまとめて入れるでも、このような階層構造のようなイメージでもいいですので、分かりやすい方でイメージしましょう。では、こうやって入れたstrTateの配列から値を取り出すときはどうしたらよいのでしょうか?もう答えを書くと・・・

Sheet1.Cells(1, 1).Value = strTate(0)(0)

となります。strTate(0)までstrYokoの1つの配列が取り出され、そこの0番目。というイメージです。

いかがでしょうか?配列に配列を入れたりすると、非常に便利なことが色々とあるのです。CSVの表なんかもそうですね。

多次元配列じゃだめなの?


※上級者向け
多次元配列か?配列の配列か?という部分についてですが、これは結論から言うと「どっちでもいい」です。どちらも2次元、3次元と扱えるものですし、特にこうしないといけないということはありません。それぞれにメリットデメリットがありますので、扱いやすい方を使えばよいと思います。
私は良く配列の配列の方を使っています。Uboundで回す時にその方が分かりやすい(読みやすい)ということもありますし、何より1行の配列を扱うのに常に多次元を利用するのが煩わしい。という部分もあります。ただ、非常に多くのデータを扱う場合などは、いっぺんに配列に取り込んだりするので、その場合は自動的に多次元になりますから、その時はそのまま大抵扱います。
この辺は好みですので、お好きな方を使ってみてください。


今日はここまで!

かしこ