Vba: 日付で match 関数を使用する方法


VBA で MATCH 関数を使用して日付を検索するには、次の構文を使用できます。

 SubMatchDate ()
    
'attempt to find date in range
On Error GoTo NoMatch
    MyMatch = WorksheetFunction.Match(CLng(CDate(" 4/15/2023 ")), Range(" A2:A10 "), 0)
    MsgBox (MyMatch)
End
    
'if no date found, create message box to tell user
NoMatch:
    MsgBox (" No Match Found ")
End

End:
End Sub

この特定の例では、 A2:A10の範囲で日付04/15/2023を検索します。

日付が見つかった場合は、範囲内のどの行に日付が含まれているかをユーザーに通知するメッセージ ボックスが表示されます。

日付が見つからない場合は、「一致するものが見つかりません」というメッセージ ボックスが表示され、その日付が範囲内に存在しないことがユーザーにわかります。

次の例は、この構文を実際に使用する方法を示しています。

: CDate関数は、VBA でテキスト文字列を日付に変換します。

例: VBA で日付を指定した MATCH 関数の使用

Excel の範囲A2:A10に次の日付のリストがあるとします。

次のマクロを作成して、範囲A2:A10に日付04/15/2023を含む行番号を検索できます。

 SubMatchDate ()
    
'attempt to find date in range
On Error GoTo NoMatch
    MyMatch = WorksheetFunction.Match(CLng(CDate(" 4/15/2023 ")), Range(" A2:A10 "), 0)
    MsgBox (MyMatch)
End
    
'if no date found, create message box to tell user
NoMatch:
    MsgBox (" No Match Found ")
End

End:
End Sub

このマクロを実行すると、次の出力が表示されます。

メッセージ ボックスには、範囲A2:A107 行目に日付04/15/2023 が見つかったことが示されています。

代わりに日付04/25/2023を検索すると、次の結果が返されることに注意してください。

メッセージ ボックスには、日付04/25/2023が範囲内に見つからなかったことが示されます。

: VBA のMatchメソッドの完全なドキュメントは、 ここで見つけることができます。

追加リソース

次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。

VBA:XLOOKUPの使い方
VBA: インデックス マッチングの使用方法
VBA: 複数の条件で INDEX MATCH を使用する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です