lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

Excel VBAでデータ高速読み込み&書き込み(パターン1)

Excel VBAでデータ高速読み込み(パターン1)

Excel VBAでデータを高速に読み込んで一括でシートに転記します。
大きく分けて2パターン紹介するつもりです。
グルーピングロジックを追加したものも含めれば3パターン

パターン1

最初から読み込むデータ数と項目数がわかっている。(この記事)

パターン2

読み込み時に抽出処理(データの選別)を行うので読み込むデータ数がわからない
kitigai.hatenablog.com

パターン3

パターン2の応用でグルーピングで抽出条件を設定します。
グループ内に条件に合うデータが2つ以上あればグループをインプットすると言った具合です。
kitigai.hatenablog.com

どのロジックでも100万レコード読み込み&書き込みチャレンジ実施済みです。

処理の概要

通常のどの言語にでもあるようなStreamReaderを使用して1レコード(行)読み込み
セルに書き込むと言う風な方法にするとExcel VBAでは処理が遅く時間がもったいないです。

なので動的2次元配列を使用し読み込んだデータを2次元配列ごと一括でシートに転記します。

1.データ数調べる
2.データ数で2次元配列宣言する
3.読み込んだデータどんどん配列に追加していく
4.配列ごと一括で転記

こんな感じです。

ソース

最後の一括転記の部分で範囲+1ってやってるのは
配列が0から数えるのとシートがA1から始まるのの違いね

もうほぼ概要で説明したとおりのことやってるだけです
項目数とか適当だし最後に範囲指定してるRangeも適当な項目位置です。


gist03078a50b77087ccff76445c4327acc3

参考サイト様

覚えてない

雑感

毎度おなじみ写経で書き上げたGist
今日はVS Code使ってみました
オートコレクトある分まだマシ?笑
個人PCにOfficeないからね仕方ないね

VBA触り始めの時のコードだからなんでそれ使ってるんwwwってのがあるね仕方ないね
なお、今もほぼ変わり映えしない模様

ちゃんとパターン2と3も書きまする。