100万×100万の高速化

100万×100万=一兆
実務でたまに見かける前任者たちの処理方法です
一つずつCellを2重以上のLoopを行う処理を見かけます

Excelの行数の最大値は1,048,576
通常業務ではぎりぎりまでデータを使うことはほとんどないと思います

A列のデータ 100万行
C列のデータ 100万行

すべてfor nextでif文で一致するデータを格納するという処理を行うと
100万行あるデータをif文で一致するかを繰り返す処理を100万回行うことになります

二重Loopになり、かかる時間は1兆回なので10万回で1秒としたら
処理にかかる時間は100000000000/100000/60/60=27.7777
単純計算で時間にすると27時間45分以上 かかります

検索だけの処理のときは繰り返し処理はVBAにあるFind、関数のVlookUpを使用すると
もっと時間が短縮できます
単純計算で1秒で処理できる回数が10万回ではなく5000回だとしたら
Loopは1度、1000000/5000/60=3.333333
単純計算で3分強で終わります

Excelにある機能やメソッドを探して使うのも高速化になります

Accessを使うともっと多くのデータを使いこなせます


この記事が気に入ったらサポートをしてみませんか?