【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関数と同じ処理をとても速く動かすことができるので、合わせて覚えておくのがおすすめです。

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

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

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

    まとめ

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

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

    この記事を書いた人

    北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

    Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
    侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

    目次