Excel VBA Application.Match nedir?
Diyelim ki bir Excel sayfası sütununda Olive, Henry, Edward, Isabelle ve Sophia adlarıyla bazı verilerimiz var. Adlar A2-A6 hücrelerinde ve notları sırasıyla B2-B6 hücrelerinde. Diyelim ki Isabelle'in notlarının B2-B6 aralığındaki konumunu bulmak istiyoruz, VBA Application.Match için kod aşağıda gösterilmiştir:
Sub VBA_Match_Ex()
Range(“D1”).Value = WorksheetFunction.Match(Range(“B5”).Value, Range(“B2:B6”), 0)
End Sub


VBA'da Application.Match Fonksiyonu Nasıl Kullanılır?
Application.Match fonksiyonunun VBA'da kullanımını birkaç örnekle öğrenelim.
Örnek #1
VBA Uygulaması. For döngüsünü kullanarak Eşleştirme işlevi
Girişte kullanılan örneği ele alalım. Buna birkaç öğrencinin daha notlarını ekledik. B Sütununda I. Dönemdeki toplam notları var ve Isabelle, Jenner ve William adlı üç öğrencinin notlarının yerini bulmalıyız. Burada Application.Match fonksiyonu amacımıza hizmet edecektir. Sadece aşağıdaki adımları izleyin:
Adım 1: Veriler Excel dosyasında şu şekilde mevcuttur. Sütun C, pozisyonlarını aradığımız üç öğrencinin arama değerlerini (toplam notlarını) gösterir.

Adım 2: Aşağıdaki kodu VBA Editörüne yazın.
Kod:
Sub VBA_Match_Ex1()
Dim x As Integer
x = 1 ila 3
Cells(x, 4).Value = Application.Match(Cells(x, 3).Value, Range(“B2:B10”), 0)
Next x
End Sub
Açıklama:
- VBA_Match_Ex1() alt prosedüründe, x değişkeni ilk satırda bir tamsayı olarak tanımlanır.
- Daha sonra, birden fazla arama değeri için For VBA döngüsünü kullanırız .
- Cells(x, 4).Value, üçüncü sütundaki karşılık gelen değerler için sonucun dördüncü sütunda yazdırılmasını sağlar. Match fonksiyonunu kullanarak, üçüncü sütundaki arama değerlerini kontrol eder.
- Son olarak, B2:B10 hücre aralığında bunları aradıktan sonra, bu arama değerleriyle eşleşir ve bunların karşılık gelen konumlarını yazdırır.

Adım 3: VBA şeridindeki Çalıştır düğmesine tıklayarak veya F5 ile kodu çalıştırın. Aradığınız değerlerin tam konumlarını görebilirsiniz.

Örnek 2
Bu örnekte, Match fonksiyonunun VLOOKUP fonksiyonuyla kullanımını göreceğiz . Burada, bu fonksiyonu anlamak amacıyla farklı alışveriş sitelerinin gönderilerine ait bazı hayali verileri aldık.
Adım 1: Gerekli verileri bir Excel çalışma sayfasına yazın. Burada, alışveriş sitesi Target'ın gönderilerini bulmalıyız. Bu nedenle, Match işlevine çok benzeyen VLOOKUP işlevini kullanacağız.

Buradaki değer E2 hücresindedir.

Adım 2: Aşağıdaki kodu VBA Editörüne yazın.
Kod:
Sub Match_Ex2()Range(“F2”).Value = Application.WorksheetFunction.VLookup(Range(“E2”).Value, Range(“A2:C7”), Application.WorksheetFunction.Match(Range(“F1”).Value, Range(“A1:C1”), 0), 0)
End Sub
Açıklama:
- Range(“F2”).Value – Sonucu görmek istediğimiz hücre.
- Application.WorksheetFunction.VLookup(Range(“E2”).Value – Burada, VLOOKUP fonksiyonu, A2 ila C7 hücreleri içinde E2 hücresine karşılık gelen değeri bulmak için atanmıştır.
- Application.WorksheetFunction.Match(Range(“F1”).Value, Range(“A1:C1”), 0), 0) – Match fonksiyonu burada A1 ile C7 hücreleri arasında F1(Day2 Shipments) hücresinde belirtilen başlığın karşılık gelen değerini bulmak için atanmıştır.
Adım 3 : Kodu çalıştırın, F2 hücresinde Hedef'in 2. Gün sevkiyatlarının değerini göreceksiniz.

MatchRow = Application.Match(“test”, Columns(1), 0)
If IsError(MatchRow) Then
MsgBox “No Match”
Else
MsgBox “Match row is” & MatchRow
End If
End Sub
Burada Sütun 1'de ve ona karşılık gelen konumda bir "test" değerinin olup olmadığını bulmaya çalışıyoruz. Değer yoksa, hatayı işlemek için IF döngüsünü kullanırız.

- Kodu çalıştırın, Excel sayfası boş olduğundan mesaj kutusunda "Eşleşme yok" mesajını alacaksınız.

