【Excel-VBA】Select Case文とIf文の処理速度!速いのはどっち?

よく似た条件分岐処理の「Select Case文とIf文」。実際にどちらを利用してプログラミングすれば良いか迷ってしまう方も多いのでは?

どちらでも使用することができ、基本的に結果は同じになります。

ユーザー
ユーザー

  • Select Case文とIf文のどちらを使うといいの?
  • Select Case文とIf文って、どっちが速いんだろう?

 

しかし、この2つの処理の処理速度は、どのように異なるのでしょうか?

 

そこで、今回の投稿内容はこの2つの処理速度の観点からお話ししていこうと思います。

 

条件分岐処理の「Select Case文とIf文の違いについて

Select Case文とIf文の違いについても詳しく言及しておりますので、合わせて確認しておきましょう。

詳細はこちら

【Excel-VBA】Select Case文とIF文の違いとその使い分け方を理解しよう!

 

処理速度はどんな時に気にするべき?

 

小さなデータ取得をする際には、そのSelect Case文とIf文を気にする必要性はほとんどありません。

しかし、時には膨大なデータをエクセルに取り込んだり、出力することがあります。

 

そんな時には、このSelect Case文とIf文の違いによっても、処理に時間がかかってしまい、影響する場合がありますので、

そんな時には、このSelect Case文とIf文を上手に併用しながら作成することで、処理速度を抑えながら、見栄えもよくコーディングすることが可能です。

 

 

 

Select Case文とIf文の処理速度検証結果

それでは、この2つのロジックについて、解説していきましょう。

 

Select Case文とIf文の記述解説

上記の図は、Select Case文とIf文による同等の処理を1万回処理を流して、どれだけ時間がかかるかを計測したものです。

その結果が下記になります。

 

Select Case文の処理速度測定結果

 

1万回処理を流した結果、Select Case文の方がかかった時間が4秒かかっています。

 

If文の処理速度測定結果

 

これに対して、If文でかかった時間が6秒でした。If文よりもSelect Case文の方が2秒早く処理が流れました。

 

この結果から

 

この結果からのわかるように、Select Case文の方が判断する処理としては、非常に処理効率が高いことがわかりました。

 

なので、処理に時間がかかるような膨大なデータ処理を行う際には、この数秒単位の時間が非常に大きな影響を与えますので、Select Case文の分岐処理を上手に取り入れながら、コーディングするとよいでしょう。

 

膨大なデータ件数になると、わずか数秒足らずの差が、何十倍にも膨れ上がるため、処理速度も大きな影響を及ぼします。

 

そのため、多大なデータ処理を行う際には、こうしたコーディングの技術に大きな処理速度が影響してくることを覚えておきましょう。

 

Select Case文とIf文の注意点について

但し、Select Case文とIf文の注意点として、下記2つを念頭においてコーディングしていきましょう。

 

<Select Case文とIf文の2つの注意点>

  • Select Case文ばかりではダメ
  • 処理速度を気にするのは、重たいデータ処理がある時のみ

 

Select Case文の方が処理速度が速いからと言って、Select Case文ばかりを使用するのは、ナンセンスです。

なぜだかわかりますか?

それは、Select Case文ばかり使用していると、縦長なコーディングになるため、メンテのしづらいソースになってしまうからです。

なるべく両方を上手に併用しながら、コーディングすることを心がけましょう。

 

まとめ

このように、Select Case文とIf文の処理速度は、Select Case文の方が速い結果となりました。

但し、だからと言って、膨大なデータでなければ、その使い分けを行う必要性はありません。

片方の構文ばかり使用していても、ただソースが見えにくくなるだけですので、なるべく両方を使い分けながら、見やすいプログラムを作ることをおすすめします。