VBAで、1次元配列を検索する方法4選!最も速い方法は意外にもVBA性能徹底検証VBA性能向上委員会VBA性能向上委員会VBAプログラミングの実行速度に関して、より速い性能を求めて徹底検証をします。1次元配列を検索する方法4選!1次元配列を検索する方法4選!VBAといえば、エクセル。エクセルといえば、セル。『どのセルを操作するか』を判断することは、自動化を目的としたプログラムの性能を上げるために、最も重要視すべき点のひとつであるといえます。どのセルかを判断するには、『検索』をします。検索の方法は、大きく分けて、以下の4つの方法があります。Each)Findメソッドを使用するワークシート関数(VLookup関数、HLOOKUP関数)を使用するそれでは、これら4つの方法について、性能の検証をしてみましょう。iRange.Cellsを、決められた回数分ループする方法です。VBAプログラムの中でも、最も基本的なロジックのひとつです。Loop構文がありますが、やっていることは同じなので、ここでは割愛します。cRangeオブジェクトの数だけループする方法です。配列の要素数だけループし、セルの場合、列行の順でループをします。IfRange.Findメソッドを使用した検索方法です。セル範囲のうち、Findメソッドの引数に指定した条件のセルを返却します。検索条件に合致したセルが存在しない場合は、Nothingを返却します。0ワークシート関数であるVLOOKUP関数またはHLOOKUP関数を使用した検索方法です。WorksheetFunctionオブジェクトのメンバで、引数は数式のそれと同様です。ここでは、VLOOKUP関数のサンプルを提示します。今回の検証は、セル範囲[A:A]に1~65536を入力し、検索する文字は乱数を発生させ、セルを検索するものとします。それぞれ4つの方法についての実行結果は、以下の通りです。0.031※単位は全て『秒』この結果より、VLOOKUP関数が圧倒的に速いことがわかります。1点注意しなければならないのが、VLOOKUP関数の使用条件に気をつけなければいけないことです。VLOOKUP関数はもともとワークシート関数、つまりVBAのためではなくエクセルのためにある機能です。セルの値を返す関数であり、セルのアドレスを返す関数ではないため、使い勝手を良くするためには一工夫必要です。データが昇順で並んでいないと検索が不安定であることより、ある特定の条件のもと効力を発揮する検索方法であると言えます。これが1次元配列の場合であるということに注意しなければなりません。2次元配列の場合は、結果が大きく変わります。セルは、行×列の2次元配列ですので、2次元配列での検証をする必要があります。2次元配列での検証結果は、こちらを参照ください。