初心者のためのExcel エクセルマクロVBA入門-配列に配列を入れる
今日はもう少し配列について突っ込んでいきたいと思います。今日配列の配列です。
( ゚д゚)アァ・・・もう無理・・・
大丈夫です。とりあえず、一番簡単な2つ構造だけ押さえればVBAの世界ではとりあえずやっていけると思います。なぜなら。。。
配列に配列を入れるとエクセルの表そのものだから!
です。
1つの変数に配列をまとめて入れてそれをまた配列にする。
とりあえず、一番VBAの案件でかなりの割合であるのが・・・
CSVやExcelファイルの取込
これです。大体、受注のデータだったり、発注のデータだったりしますが、列ごとに日付とか商品とか、数量とか、金額とか書いている「表」を取り込んで、加工してとか、、、そういう感じですよね。
それを取り込むのに役に立つのが2次元の配列なんです。
表で考えるとわかりやすいと思います。
図のように横に向かって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に格納する。
ということになります。言葉で説明してもわからないと思うので・・・
こんなイメージです。さらに、書いてみると・・・
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行の配列を扱うのに常に多次元を利用するのが煩わしい。という部分もあります。ただ、非常に多くのデータを扱う場合などは、いっぺんに配列に取り込んだりするので、その場合は自動的に多次元になりますから、その時はそのまま大抵扱います。
この辺は好みですので、お好きな方を使ってみてください。
今日はここまで!
かしこ