Excel VBAでデータ高速読み込み&書き込み(パターン3)
パターン3です。
前回のパターン2の応用でグルーピング処理を行いながら動的2次元配列を使用して
高速に読み込み書き込み処理を行います。
目次
処理の概要
動的2次元配列を使ってちょっとだけ抽出処理を入れてみようと言う感じです。
想定データ
下記のデータを想定します。
会社コード | 社員コード | 項目A | 項目B |
---|---|---|---|
10 | 0001 | 5000兆円 | 0円 |
10 | 0002 | 0円 | 100万円 |
10 | 0003 | 100万円 | 0円 |
20 | 0010 | 5000兆円 | 0円 |
20 | 0011 | 100万円 | 0円 |
20 | 0012 | 5000兆円 | 0円 |
20 | 0013 | 5000兆円 | 100万円 |
30 | 0020 | 100万円 | 0円 |
40 | 0030 | 5000兆円 | 100万円 |
抽出条件
そして以下の条件で抽出します。
- 1つの会社(コード)に2名以上社員がいる
- 項目AまたはDに100万円がデータとしてある社員が2人以上いる会社
DBからロードする時点でSQLでできるじゃんとかは禁句ね。
ソース
グルーピングと言ってますがキーマッチングの処理を応用しただけです。
実際の現場ではSQLで抽出処理を行うのが非現実的であったためVBAを使用しましたが
抽出のロジックいろいろ書かないといけないのでSQLの方が楽かなと言う感じです。
https://gist.github.com/6199609093a819caa02c8714d8dd3324 🔗
グルーピング処理
同じ会社を読み込んでいる間バッファの配列に格納して
抽出条件に当てはまったら出力用配列に格納すると言った感じです。