今回は、予告通り、期待を裏切らずに、誰も期待してないかもしれないけど(笑)、やります・・・WorksheetFunctionについてです。VBAをやれば、必ず使用することになるでしょう。言いますか、これを使わないと、エクセルの意味がなくなっちゃいますので。関数あってのエクセルですし、関数無けりゃ、ただの作文用紙です。(笑)ということで、実際に、その関数をVBAで使用して、いろいろ検証してみます。使用する関数は、VLOOKUPです。使う関数の1つですし、作成中のエクセルでも使用しています。以下の表を使用しました、10000行あります。Sub上の画像のように、検索値があれば何も問題はありません。存在しない検索値を指定すると、となってしまいます、これでは困ります。Errorでエラーを回避します。Nextは、エラーが発生しても、次のステップに進みます。Errで、エラーがあったかを判定しています。Sub上の表で、検索値が7342であっても、エラーが発生します。Stringにいれているので、型違いで、不一致になります。この場合は、Variant型に入れる必要があります。この例であれば、数値型でも大丈夫です。これはどうでしょうか。Errorがありませんが・・・これはエラーになりません。Application.WorksheetFunctionはExcel97からです。Excel97より前の記述ですが、最新の関数も使えます。(私は近年まで、これを使っていました。)ワークシートでVLOOKUPを使って、検索値がない場合と同様に、「#N/A」が返されます。同一と言う訳ではありません。使用はお勧めできません。WorksheetFunctionクラス(1つのクラスです)を使用するべきだと思います。エラー回避方法として、以下の方法もあります。Sub非常にスマートなコードだと思います。「可読性」も良いように思います。Findは、少し処理速度が遅いようです、あくまで、Rangeのメソッドですので。それは、VLookUpに比べてのことです。実際に使用するにあたっての問題にはなりません。5つのパターンを示しましたが、検索値に、9380として実行すると、検索されません。検索列の9380のセルは文字列になっているのです。文字列と数値の比較では、例え見た目が同じでも、不一致をおこします。見た目の数値でも検索したい場合は、少し難しい事になります。以下に、それを対処するコードのサンプルを示します。3パターンに対応させています。ブール型等もあり、これでも完全ではありませんが、通常はこれでなんとかなるでしょう。型変換をする関数です。Cdateは、日付型へのデータ変換をする関数です。型変換をする関数は、データ型毎に存在します。数値として比較するだけなら、Cdblで通常は十分ですよね。処理速度は?との疑問もでますが、Test5のFindとほぼ同程度の処理速度です。(1000ループで計測しました。)以前にも解説しましたが、配列に入れての処理は、セルの直接操作よりはるかに高速です。通常に使用する場合は、test2かtest5になるでしょう。型の問題があるなら、test6のように、配列を使って処理する事を考える必要があります。元のシートを正しく編集することが王道だとは思います。外部データを受け取っての自動処理の場合は、いろいろ工夫する必要が出てきます。WorksheetFunctionには、ワークシートで使用できる関数の大部分が入っています。大部分です、全てではありません。何が無いかと言うと・・・よく分かりません。OFFSETなどは無いようです。VBAではRangeにOffseプロパティもありますし、ロジックで対応できるので必要ありません。Marchは使えます。Matchは、VLookUpと同様に、検索値が無いとエラーになりますので、同様のエラー処理が必要です。使用方法は同じなので、直ぐに理解できると思います。WorksheetFunctionは、間違いなく処理速度は速いです。これを活用しない手はありません。今回はこの辺までにして、次回はどうしましょうか。1回くらい、復習をかねて、何かやりましょうかね。Next)|VBA入門8.セルに文字を入れるとは(Range,Value)|VBA入門9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説10.ひらがな⇔カタカナの変換|エクセル基本操作ホームマクロVBAエクセル顧客管理WorksheetFunctionについてこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。GASスプレッドシート入門スプレッドシート応用GAS入門GAS応用ホームマクロVBAエクセル顧客管理WorksheetFunctionについてこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。