【Excel-VBA】For文とDo Untillの違い~処理が速いのはどっち?

2020年1月23日

 

Excel-VBAでプログラムを実装する上で必ず使用すると言ってもいい、「For Next」「Do Until」文の2つがあります。

これらはどちらも、「ループ処理」ともいわれ、何度も同じ処理を繰り返す時に用いられるVBAの構文です。

しかし、実際にこれらを使用してもどちらを使用すればよいのか、わからない方も多いのでは?

そこで、このFor Next文とDo Until文の使い分け方・処理速度について解説していこうと思います。

For文とDo Until文の違いとは

ループ処理には、主に2つの記述方法があります。

【ループ処理】

  • For Next
  • Do Until

 

の2つの記述方法あります。

どちらも同じような処理を何度も繰り返すために利用される構文ですが、どちらを利用しても返ってくる答えは同じです。

そのため、For Next と Do Until文の違いというを、記述の仕方が異なるという点だけをしっかり理解しておいて下さい。

最終的な結果は、どちらを活用しても同じですので、お間違えの無いように。

 

For Next文とDo Until文の使い分けの仕方

それでは、このFor Next と Do Until文は、どのような場合に使い分けを行ったらよいのでしょうか?

2つの使い分け方について

実は、一昔前のOfficeでは、For Next文の中にFor Next文を記述するのは、3つまでが限界で、それ以上はエラーになってしまっていました。しかし今は、Officeの性能がグレードアップしたことで、それほど使い分けをしなくても良くなってきました。

なので、どちらで記述しても間違えではありません。

「一つの構文の中ででFor Next文のを何度も利用することができるのか」という点については、下記を参照ください。

 

あえて分けるなら、自分の好みで使用用途を切り分けよう!

 

【ループ処理の使用用途の切り分け】

  • Do Until文の場合は ⇒「その処理が○○になるまで」
  • For Next文の場合は ⇒「その処理が○○と○○の間は」

 

 

終わりを指定するかしないかで使い分けるのが理想

このような形で切り分けをしてもよいでしょう。

 

【ループ処理の使い分けの一例】

  • Do Until文は終わりの指定が不要
  • For Next文は終わりを指定する必要性がある

 

但し、これはあくまで「こうするとよい」という理由だけで、特にどちらを使ったからと言って、それが悪いわけではありません。

どちらでも処理は動作しますので、上手に使い分けをしていきましょう。

ちなみに私は、ソースの大半はFor Next文で記述しますので、この辺は好みの部分や処理速度が大きく影響してきます。

ループ処理の記述の仕方の違い

まず、このループ文の記述の仕方にはどんな違いがあるのでしょうか?

同じループ処理であるにも関わらず、コーディングが微妙に異なります。

下記の記述では、カウント数を900000000に設定して、それが何秒間で処理が終わるかを計測したものです。

 

For Next文のソース記述方法

こちらの記述は、900000000回処理を流した時に何秒後に処理が終わるかを計測したものです。

 

Do Until文のソース記述

そして、Do Until文とほとんどソースは変更しなくて平気ですが、一部その値をカウントアップしていく処理は自分で記述する必要性があります。

 

For Next文と Do Until文の処理速度計測結果

 

実際に、この同じ処理をFor Next文と Do Until文で処理時間を計測した結果下記のような結果が算出されました。

 

・処理速度が早いのは「For Next文」

 

【2つの計測結果の比較】

このように、Do Until文では、約22秒かかっていたのに対して、 For Next文では、7秒程しかかかっていません。

圧倒的にFor Next文の方が処理速度が速いことがわかりますよね。

この要因として、おそらくDo Until文はカウントする際にカウントアップで数値を変数intNoに入れる計算処理が走ることで、メモリーを消費しているため、ここで処理に差が生まれることが想定されます。

 

まとめ

For Next文と Do Until文は、同じループ処理とした記述ですが、変数の格納等によってもその処理速度に大きな影響を与えることがわかりました。

あなたは、仕組みを実装する上で、どんなことを創造しながら、仕組みを作りますか?

エンドユーザーの利便性を考えた上で、処理速度という問題は、重要視するべく非常に大切な問題です。

こうしたことも考慮しながら、仕組みづくりを実装できるととてもいいですね。

 

 

【おすすめ:WordPressテーマ 「WING(AFFINGER5)」について
     ※ブログを始めるなら絶対おすすめ【特典あり】


私も新たなサイト【育チルnet」にて、検索エンジンの上位の多くを占めると言われるSEO対策に強いWordpressテーマを導入してみました。

無料テーマから有料テーマにしただけなのに、0円だった収益が2~3万円まで上がったんです!

正直驚きでした!実際に利用した所感は、デザイン性能がかなり整っていますし、表示速度もやっぱりかなり速いです。人気なWordpressテーマなだけはあると感じました。

無料のテーマでも私は悪いとは思っていませんが、やはり検索エンジンからの評価はだいぶ違いました。

初めて数ヶ月ですが、もうすでに検索エンジンから大きく表示されるようになっています。

どうせやるなら、しっかりgoogle社からの評価を受けられる整えられた環境でブログ運営する方が絶対にいいと感じたため、当サイトをご覧下さった皆様にもお伝えさせて頂きました!

Wordpressテーマを新たにご検討方は、今しかない期間限定の特典も付いていますので、お早めにご確認下さい。

レビュー

公式サイト



 ←ためになったら押してね^^