lycheejam's tech log

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

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

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

パターン3です。
前回のパターン2の応用でグルーピング処理を行いながら動的2次元配列を使用して
高速に読み込み書き込み処理を行います。

パターン1,2はこちら

kitigai.hatenablog.com
kitigai.hatenablog.com

処理の概要

動的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の方が楽かなと言う感じです。


gist6199609093a819caa02c8714d8dd3324

グルーピング処理

同じ会社を読み込んでいる間バッファの配列に格納して
抽出条件に当てはまったら出力用配列に格納すると言った感じです。

雑感

ただ心のソースコードを写経してるだけなので
検証とかしてません
なんでカラム数とかハチャメチャだし変数名考えるの面倒だしすいません。