Vba: match işlevi tarihlerle nasıl kullanılır?
VBA’da bir tarih bulmak amacıyla MATCH işlevini kullanmak için aşağıdaki sözdizimini kullanabilirsiniz:
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
Bu özel örnek , A2:A10 aralığında 04/15/2023 tarihini arar.
Tarih bulunursa, kullanıcıya aralıktaki hangi satırın tarihi içerdiğini bildiren bir mesaj kutusu görüntülenir.
Tarih bulunamazsa, “Eşleşme bulunamadı” yazan bir mesaj kutusu görünür, böylece kullanıcı, tarihin aralıkta mevcut olmadığını bilir.
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Not : CDate işlevi, bir metin dizesini VBA’da bir tarihe dönüştürür.
Örnek: VBA’da MATCH İşlevini Tarihlerle Kullanma
Excel’de A2:A10 aralığında aşağıdaki tarih listesine sahip olduğumuzu varsayalım:
A2:A10 aralığında 04/15/2023 tarihini içeren satır numarasını bulmak için aşağıdaki makroyu oluşturabiliriz:
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
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
Mesaj kutusu bize 04/15/2023 tarihinin A2:A10 aralığının 7. satırında bulunduğunu söylüyor.
Bunun yerine 04/25/2023 tarihini ararsak aşağıdaki sonucu alacağımızı unutmayın:
Mesaj kutusu bize 25.04.2023 tarihinin aralıkta bulunamadığını söylüyor.
Not : VBA’daki Match yönteminin tam belgelerini burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
VBA: XLOOKUP nasıl kullanılır?
VBA: Dizin eşleştirme nasıl kullanılır?
VBA: INDEX MATCH’i birden çok kriterle kullanma