Maniac

VBA高速化検証:Empty値の判定方法

「Variant型の変数がEmpty値かどうか」の判定は、拙「ナンプレ無双」の多くの場面で使用しました。その際「If varI = Empty Then」とIsEmpty関数を使用した「If IsEmpty(varI) Then」の、2つの方法のどちらが高速か、検証を行いました。
また、セル値がEmpty値かどうかの判定方法の速度比較も併せて行いました。

Empty値の判定に関する速度比較

下の表とグラフは、私のパソコン※でスピード検証テストを行った結果です。
※Vista / intel Core2 Duo / Excel2003,2007


結果

Variant型変数の判定

・Excel2003と2007では、ほぼ同様の結果であった
・IsEmpty関数を使用した方が、約3分の2の時間で処理を終えた

セル値の判定】

・Excel2003の方が、5ポイント程高速であった
・IsEmpty関数を使用しても、処理速度はほぼ同様の結果であった
・セルの参照には非常に時間がかかった


結果から

Variant型変数のEmpty値の判定には、IsEmpty関数の使用は必須です。セル値の判定では、IsEmpty関数を使用しても高速化の効果は見られませんが、普段からEmpty値の判定にはIsEmpty関数を使用する癖をつけると良いでしょう。
また、セル値を調べる際は、Variant型変数にセル範囲の値を格納し、Variant型変数を参照する方法は必須です。(下に補足検証「セル範囲の値をVariant型変数に格納してのEmpty値の判定」を載せました)

※今回のテストは私のパソコンのみの検証であり、どのような環境でも、同様の結果を保証するものではありません。
※Excelのバージョンで結果に違いが出る事が考えられます。


検証テストコードとファイル

●検証テストのコード [ Code ]
●Excel97-2010 [Test_File] 検証テストを行ったファイルです。


セル範囲の値をVariant型変数に格納してのEmpty値の判定

セル範囲の値をVariant型変数に格納して、そのVariant型変数を参照し、Empty値の判定を行いました。尚、比較対象は、先の検証の【セル値の判定】です。

結果

・Excel2003の方が、若干高速であった
・Variant型の変数に格納した方が、約25倍高速であった

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.