VBA Speedup

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倍高速であった

Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.