和風スパゲティのレシピ

日本語でコーディングするExcelVBA

マクロの高速化

Sub/Functionプロシージャを呼ぶのにかかる時間

マクロをSub分割したり自作関数を作り始めると、Sub/Functionを呼ぶ時間分処理が遅くならないか心配になります。しかし、検証してみると1,000万回Callして1~2秒程度しか要さないため、プロシージャを呼ぶのにかかる時間は0だと思ってOKです。

IfステートメントとIIf関数の速度比較

5行かかるIf~Else~EndIfの分岐を1行で済ますIIf関数はとても便利なのですが、若干遅いためそれを検証してみます。結論としては、IIfが条件がTrueでもFalse部分も計算してしまうという遅さがあるが、それを除けば実務上実感できる差は出ません。

Instr関数とLike演算子の速度比較(文字列を含むか判定)

文字列が文字列を含んでいるかどうかを判定する2つの方法「Instr関数/Like演算子」について、どちらが早いかを検証しました。Like演算子が安定して速かったですが、最終結論は「どちらも十分早いので書きやすい/読みやすい方を使えばよい」です。

マクロの処理時間を計測する-Timer関数の使い方

マクロの処理時間を計測する方法を解説します。現在時刻を約ミリ秒単位で取得するTimer関数を使うと簡単に取得することができます。開始時刻 = Timerと、終了時刻 = Timerをマクロに設置し、終了時刻 - 開始時刻を計算することで取得できます。

Findは遅くて非表示に弱くてユーザー操作の影響を受ける

検索によく用いられるFindメソッドさんですが、実は危なくて遅い地雷メソッドです。非表示セルを見つけられない、ユーザーと設定を共有する、MATCH関数より十数倍レベルで遅い、の三重苦なので、なるべく使わないようにしましょう。

VLOOKUP関数を高速化する方法2選

VLOOKUPの高速化手法は、《簡単》データが連続していることを活用した計算スキップ法と、《超高速》ソート済であることを活用した近似一致法の2種類があります。どちらも使いこなせばとても便利ですので、是非習得していってください。

マクロの速度は追求すべきものだけを追求すべし

マクロの速度はどこまで気にするべきか?というテーマです。マクロの早さが気になってキリがないよ~に陥っていた人は、「早くする意味のないマクロ」「早くしても無駄な処理」を意識すると、早さと読みやすさのバランスが取れるようになります。

If文は判定回数より読みやすさを最適化すべし

コードの読みやすさと処理速度のバランスに関するお話です。テーマは「Ifの判定回数にどれだけこだわるか」です。単純な比較時間は、実はほとんど0で、別にIfは重複しても問題ありません。Else地獄に陥らないよう、読みやすさを追求していきましょう。

For文をたくさん分割しても処理は遅くならない

マクロの処理速度に関するお話です。今回のテーマは「錯覚しやすいForステートメントの処理速度」です。For R = 1 To 10000 処理A,B,C,D Nextは、For R = 1 To 10000 処理A Next × 4個に分けても、「Rに1を足す×30000回」しか処理の内容に差がありません。