可変CSVを読み込んだ結果

調理していくぞ

前回は横可変csvを読み込んだわけですが、そのデータを元に、必要な部分だけを取り出したいわけです。

技術的には何も難しいことは無く、普通にループすりゃいいわけです。

ただし、ループ数が可変なので、それを考慮します。

ループスタート箇所は分かっているし、ループに含まれる項目ももちろんわかっているので、

Loopnumとでも名付けて、(LastColumn – StartColumn + 1) \ 5

とでもしましょうか。

これまでとは違うのだよ

とりあえず完成。

今まで通り、Cellsとか使ってペタペタ貼っていく作業から始めて見ましたが、やはり数千行となると少しもっさり。(6.7秒)

少し早くしたいので、前回学んだ配列とやらを使ってみます。要は、代入作業が長いっていうので、それを一度でやってしまいます。

Dim hako as variant

今回、箱のサイズは分かるので、

Redim hako(行数, 列数)

これにcellをぶち込んでいきました。

最後に、Range(“A2”)に代入するのですが、この辺上手く理解できていません。

物は試し、壊れはするまい。

Range(“A2”) = hako

うむ、A2のみに代入された。なるほど、そういう感じか。

前やってみたやつ

Range(“A2”).Resize(行数,列数) = hako

上手くいった。どうやら、Resizeを使うと、rangeの範囲をここからここまで広げるよ、的なことが出来るらしいぞ。勉強しなきゃ。

ちなみに、実行時間は2.7秒。大分サクサクだ。

まとめ

やっとVBAの勉強が一段落したが、いざやろうと思うと、こんな簡単なアプリケーションすら手を焼いている。

実際にやってみるのが一番勉強になるなあ~と思った。