
当研究所では、一人でも多くのご利用ユーザの環境・処理の対象・用途ごとに対応できるようにするため、
様々な場面に応じた専用の処理を多数構築して実現しています。
その実現にいたるアイデアの変遷例を紹介します。
その実現にいたるアイデアの変遷例を紹介します。
マッチングマクロの 高速検索ロジック
マッチングマクロは 『高速版』というサブタイトルが付いています。
これは高速な検索ロジックを搭載していることをあらわしています。
以前に公開していたVer3.7のバージョンには、高速ソートモードを搭載していました。
これは、≪キーが事前にソートされている場合は、一度検索した範囲は2度検索する必要がない≫ ということを利用して検索スピードを上げるものでした。 しかし、このモードは事前にデータがソートされている必要があるなど、限られた場面でしか使えませんでした。
様々な場面でもっと高速に処理できるようにしたい
ということで、
この高速検索ロジックは、重複データマクロ にも搭載されています。
これは高速な検索ロジックを搭載していることをあらわしています。
以前に公開していたVer3.7のバージョンには、高速ソートモードを搭載していました。
これは、≪キーが事前にソートされている場合は、一度検索した範囲は2度検索する必要がない≫ ということを利用して検索スピードを上げるものでした。 しかし、このモードは事前にデータがソートされている必要があるなど、限られた場面でしか使えませんでした。
ということで、
1. マクロをDLL化してアセンブラレベルで動作するようにしました。これだけでもかなりの高速化になります。さらに、、
2. 処理のはじめにキー部分を深く解析することにより、より一段と高速に検索できるようにしました。
この2つの対応策があいまって大幅な高速処理が実現しています。
さらに、
3. 開発の後半段階で、ストップウオッチ片手に細かく何度も処理速度を計測し、 プログラムの使用命令はもとより、コード一行一行の順番にいたるまで調整してさらなる高速化を目指しました。 このチューニング作業で20%以上早くなりました。
その結果、最新版のマッチングマクロでは、以前のバージョンに搭載していた高速ソートモードよりも、断然早い処理速度を実現しています。2. 処理のはじめにキー部分を深く解析することにより、より一段と高速に検索できるようにしました。
この2つの対応策があいまって大幅な高速処理が実現しています。
さらに、
3. 開発の後半段階で、ストップウオッチ片手に細かく何度も処理速度を計測し、 プログラムの使用命令はもとより、コード一行一行の順番にいたるまで調整してさらなる高速化を目指しました。 このチューニング作業で20%以上早くなりました。
スーパー検索置換えマクロの丁寧置換え
スーパー検索置換えマクロは、丁寧置換え に対応しています。これは、書式を維持したまま置換えできるというものです。
EXCEL標準の置換えでは、1つのセル内に複数の書式があると、書式が全部同じになってしまいますが、 この丁寧置換えでは、書式は維持されたまま置換えたい文字だけが変わります。
この機能は、簡単に説明すると、セルやオートシェイプなどのテキストを検索し、
置換え文字があったら、1つずつ個別に置き換える という処理を繰り返しています。
そこでEXCELのバージョン、セル・テキストボックスなどの種類、グループ化しているかどうか、255文字以上あるか、、
などひとつずつケースを分けて開発し実現しています。
EXCEL標準の置換えでは、1つのセル内に複数の書式があると、書式が全部同じになってしまいますが、 この丁寧置換えでは、書式は維持されたまま置換えたい文字だけが変わります。
この処理の実現には、文字列操作等に関する機能を使う必要がありますが、詳しく調べてみ
ると、対象がセルか、オートシェイプなどかや、処理対象の文字数が255文字以上かどうか、
オートシェイプの場合はグループ化されているか、EXCELのバージョンやサービスパックの適用状態、
等々によって動作が違ったりすることがわかってきました。












