15,000件ほどのデータ処理の依頼があった。


あるシートのデータを、一部データ変換を行いつつ、別のシートにレイアウト(項目の並び順)に貼りかえるという単純なもの。


1セルから1セルへ直接転記するよう実装していたが、セル直接の読み書きは遅い。

シート上のデータを変数に突っ込んで処理し、処理結果を変数から別のシートへ流し込むようにすると、一体どのくらい速くなるのか興味があったので書き換えてみた。


前者 ほぼ60秒に対し、後者 ほぼ 2秒であった。なんと30倍、仮に3秒であったとしても20倍、高速になった。

もしこういうテクニックを知らないなら「Excelの処理は遅い」という判断が下されてしまう。


上記以外にも、例えばデータの値によってセルに着色する、フォントを変える、などという処理はかなり時間を食ってしまうのだ。まとめて処理することで高速にはなるが、ウルトラC的に速くなる手法がないかな、と考えている。技術的には難しいのかもしれないけれど、セルオブジェクトに対してのアクセス速度が速くなれば解決してしまう問題なのかもしれない。