Excel関数をVBAで動かす!WorksheetFunctionの基本とエラー回避術

【業務効率化】VBA
スポンサーリンク

「またVLOOKUP関数を下のセルまでドラッグする作業か……」

こんなふうにため息をついたことはありませんか?

実を言うと、私も過去に5万行のデータへ一斉にVLOOKUP関数を入力し、Excelをフリーズさせてしまった苦い経験があります。

そんな「手作業の限界」や「処理の重さ」を劇的に解消してくれるのが、VBAからVLOOKUP関数を呼び出す方法です。

【業務効率化】VBAの記事を見る 

【実務で使う】Excel関数の記事を見る 

【VLOOKUP関数】実務で必須!表データをタテに検索する

WorksheetFunctionとは?

簡単に言うと、「Excelの便利な関数を、VBAというロボットに代行してもらうための合言葉」のようなものです。

通常、VLOOKUP関数はワークシートのセルに直接入力しますが、これではデータ量が増えるにつれて再計算の負荷が高まり、Excelの動作が重くなってしまいます。

しかし、VBAの内部で計算を完結させれば、セルには「最終的な結果だけ」が書き込まれるため、全体の動作が劇的に軽くなります。

基本の書き方(コピペで使えるサンプルコード)

例えば、「商品ID」を基準に「単価」を検索し、セルB2にその結果を表示させるコードは、以下のように非常にシンプルです。

Sub SimpleVlookup()
    Dim result As Variant
    Dim searchKey As String
   
    ' 検索したいキーワード(例:商品コード)
    searchKey = Range("A2").Value
   
    ' WorksheetFunctionを使ってVLOOKUPを実行
    ' 引数は通常のExcel関数と同じ(検索値, 範囲, 列番号, 検索方法)
    ' 検索方法は 0 (False) で完全一致
    result = Application.WorksheetFunction.VLookup(searchKey, Range("E:F"), 2, 0)
   
    ' 結果をセルB2に表示
    Range("B2").Value = result
   
End Sub

初心者がハマりやすい「エラー」の壁と回避策

VBAでVLOOKUP関数を扱う際、最も注意すべきなのが「検索する値が見つからない(#N/Aエラー)」というケースです。

通常のワークシート上であればエラー値が表示されるだけで済みますが、VBAの処理中に対策なしでこれが発生すると、プログラムそのものが強制終了してしまいます。

これを防ぐためには、あらかじめエラーが発生しても「そのまま処理を続けてください」とVBAに指示を出しておく必要があります。

Sub SafeVlookup()
    Dim result As Variant
    Dim searchKey As String
   
    searchKey = Range("A2").Value
   
    ' エラーが起きても無視して次へ進む
    On Error Resume Next
   
    ' VLOOKUP実行
    result = Application.WorksheetFunction.VLookup(searchKey, Range("E:F"), 2, 0)
   
    ' エラーが起きた(見つからなかった)場合の処理
    If Err.Number <> 0 Then
        Range("B2").Value = "未登録"
        Err.Clear ' エラー情報をリセット
    Else
        Range("B2").Value = result
    End If
   
    ' エラー無視の設定を解除
    On Error GoTo 0
End Sub

【業務効率化】VBAの記事を見る 

【実務で使う】Excel関数の記事を見る 

【VLOOKUP関数】実務で必須!表データをタテに検索する


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル未分類
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました