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:A10の7 行目に日付04/15/2023 が見つかったことが示されています。
代わりに日付04/25/2023を検索すると、次の結果が返されることに注意してください。
メッセージ ボックスには、日付04/25/2023が範囲内に見つからなかったことが示されます。
注: VBA のMatchメソッドの完全なドキュメントは、 ここで見つけることができます。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA:XLOOKUPの使い方
VBA: インデックス マッチングの使用方法
VBA: 複数の条件で INDEX MATCH を使用する方法