【ExcelVBA入門】MATCH関数を使ったセル範囲を検索する方法を徹底解説!

皆さんは、VBAでセル範囲を検索する方法を知っていますか?

セル範囲を検索する方法の一つに、MATCH関数があります。VBAでワークシート関数を使えば、ExcelのMATCH関数をVBAで使うことができるので、Excelで使ったことがある方にもおすすめです!

そこで今回は、

  • MATCH関数を使う方法とは
  • INDEX関数をつかった応用テクニック
  • 応用的な検索に使えるFindメソッドとは
  • といった基礎的なことから、応用的な方法まで、徹底的に解説します!

    MATCH関数とは

    MATCH関数とは、範囲内から指定した値を検索して、上から数えた位置を求める関数です。VBAではワークシート関数を使って、ExcelのMATCH関数を使うことができます。使い方は以下の通りです。

    使い方:

    WorksheetFunction.Match( 検索値 , 検索範囲 , 検索方法)

    サンプル:

    WorksheetFunction.Match( "侍エンジニア" , Range("A1:B5") , 0)

    「侍エンジニア」という文字列をA1 ~ B5セルの範囲で検索して、見つかった位置を取得しているサンプルです。第3引数の検索方法に入力する値によって、検索方法が変わるので少し注意が必要です。

    • 0 :検索範囲から完全一致で検索
    • 1 :検索範囲から近似値以下で最大値を検索
    • -1:検索範囲から近似値以下で最小値を検索

     

    1、-1を選択する場合は、データを事前に以下のように並べ替えておく必要があるので、更に注意が必要です。

    • 1 :データを事前に昇順
    • -1:データを事前に降順

    ほとんど0を使うケースが多いですが、近似値で検索するためにMATCH関数を使う場合は注意してくださいね。

    サンプルコード

    次に、サンプルコードをもとに具体的な使い方を解説します。

    事前に用意したシートの内容:

    画像:サンプルデータ

    サンプルコード:

    Sub Test()
      MsgBox WorksheetFunction.Match("侍エンジニア", Range("A1:A4"), 0)
    End Sub

    実行結果:

    画像:実行結果

    このように、検索した結果の位置を簡単に調べることができます。行を挿入する場合、データをコピー・削除する場合など覚えておくと便利です。

    INDEX関数を使ったVLOOKUP風の使い方とは

    Excelをよく使う方だと、VLOOKUP関数は馴染みがある方が多いのではないでしょうか。INDEX関数とMATCH関数を応用すると、VLOOKUP関数と同じ処理をとても速く動かすことができるので、合わせて覚えておくのがおすすめです。

    以下記事で詳しく解説しているので、気になる方は見てみてくださいね!

    脱VBA初心者!VLOOKUP関数の基礎の基礎をわかりやすく解説!
    更新日 : 2019年4月3日

    高度な検索がしたい方におすすめなFindメソッドとは

    MATCH関数は便利かつ処理が速いのでおすすめなのですが、完全一致 or ざっくりとした近似値しか調べることができません。高度な検索がしたい場合は、Findメソッドがおすすめです!Findメソッドの使い方については以下記事で詳しく解説しているので、気になる方は見てみてくださいね!

    【VBA入門】Find、FindNextで検索(完全一致、部分一致、複数一致)
    更新日 : 2020年6月25日

    まとめ

    今回は、VBAでMATCH関数を使ってセル範囲を検索する方法について解説しました。データを検索してセルの位置を調べるケースはよくあるので、覚えておくと便利です。

    別記事として紹介したVLOOKUP関数、INDEX関数を応用した方法、Findメソッドの使い方も合わせて覚えておくと、応用が利くのでおすめです!ぜひ、使ってみてくださいね!

    LINEで送る
    Pocket

    「プログラミング、右も左もわからない…」という方にオススメ

    当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

    その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

    侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

    cta_under_bnr

    「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

    書いた人

    Sanshiro Wakizaka

    Sanshiro Wakizaka

    新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
    Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
    また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
    現在はフリーランスエンジニア兼テックライターとして活動中。