【簡単エクセル/Excel VBA マクロ】10万行クラスのデータになると「配列」と「プログレスバー」が必要にってくる


いつもありがとうございます!
規模が大きいデータを扱う場合の考え方を綴りたいと思います。
大規模データのマッチングには時短の工夫が必須
10万行程度のデータにおける、データマッチング(突合・照合)処理になると、時短の工夫が必要です。10万行は、Excelで取り扱うデータとしては、かなり大きい部類に入るでしょう。
さすがにこれだけのデータ量になると、セルを逐一参照するロジックではオーバヘッドに時間がかかり、処理速度がかなり遅くなります。そこで効果を発揮するのが「配列」ですね。こういった大規模データでは配列を使わざるを得ません。
時短と言えば"配列"
配列を使うと、コードがやや複雑になるものの、セル操作のオーバーヘッドが大幅に減り、処理速度は格段に向上します。2倍や3倍というレベルではなく、圧倒的なスピードアップが期待できます。
配列を使ったコードも慣れてしまえば、それほど難しくありません。(むしろ小規模なデータでも配列を使わないと気が済まなくなってくる)
それでも時間がかかる大規模データ
とはいえ、大規模データでは、配列を使っても相応の時間がかかります。様々な条件によって変わりますが、10万行クラスですと、すべてのデータマッチング処理に約20~30分ほど要するでしょう。
そんなときには"プログレスバー"
特定のシチュエーションで何度か利用して終わりにする“単発系”のアプリでは、必要最小限の機能しか実装しないのが一般的です。
しかし、20~30分もの時間がかかると「あとどれくらいで終わるのか」「本当に動いているのか」という不安で、待ってられないんですよね。そんなときには、単発系であっても、やはりプログレスバーです。
通常、単発のアプリケーションにプログレスバーまで実装するケースは少ないかもしれませんが、処理が長時間に及ぶ場合は、必要性を感じます。
それでも短時間でセンスの良いアプリに仕上げるのがプロの仕事
このような問題をサッと解決し、短時間でアプリを仕上げて業務に活用するのがプロの仕事ですよね。
高速なコード生成といえば、ChatGPですが、プロンプトでチューニングしながらコードを実装していくと、かえって時間がかかる場合もあります。現在のところは、自力、ブログ参照、ChatGPT、このあたりを相補的に使って仕上げていくのが良いでしょう。
なお、自分でブログを書いていると、これまで蓄積した記事にアクセスして簡単に情報を得ることができるので、時短につながります。
ブログは、自身の勉強にもなりますし、読者の皆さんの役にも立ちますし、さらに自分の業務にも役立ちます。素晴らしいツールですね。
ご参考にWordPressサイトの立ち上げ手順を解説した記事のリンクを掲載しますね。もしご興味があれば。
まとめ
手段はどうあれ、最短で"センスの良い"アプリに仕上げるの大切。それ以上の価値はない。それこそが、"本物"のVBAプログラマーの仕事ですね。

ご覧いただきありがとうございました!
この記事を書いた人
- ■人生を追求する凡人■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢■光学・機械系エンジニア(歴20年、内マネジメント10年、特許数件権利化)/副業フリーランスエンジニア■読書・文学愛好■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を研究。■VBAアプリ開発サービス提供中(業務委託 / VBA使用経験20年)■Python愛好(歴5年)■VBAエキスパート「Excel VBA スタンダード」(上級者向け資格)/ Python 3 エンジニア認定基礎(経済産業省「ITスキル標準(ITSS)」に掲載)