EXCEL VBA MATCH FONKSİYONU

 

VBA MATCH, bir sütun veya satırda verilen arama değerinin konumunu bize verebilen bir çalışma sayfası işlevidir. VBA MATCH bir arama işlevidir ancak bir VBA işlevi değildir. Bu nedenle, yalnızca çalışma sayfası işlevi kategorisi altında kullanılabilir. VBA'da kullanılabilir herhangi bir arama işlevimiz yoktur.


MATCH excel işlevini daha önce kullandıysanız , tüm argümanlar ve çalışma metodolojileri aynıdır. Bir arama değeri alır, onu arar ve verilen aralıktaki konumunu döndürür. Dönüş değeri her zaman sayısaldır. MATCH işlevini Excel çalışma sayfasında daha önce kullandıysanız, tüm argümanlar ve çalışma metodolojileri aynıdır. Örneğin, aşağıdaki verilere bakın.

Vba Maç Giriş

A1 ila B9 aralığında verilerimiz var ve bu aralıktan E2 hücresindeki "Emp ID" 21194'ün konumunu bulmamız gerekiyor. Verilen emp id'nin konumunu almak için aşağıdaki VBA MATCH işlevini kullanabiliriz.

Vba Match Giriş - Kod

Bu kodu çalıştırdığımızda, E2 hücresindeki verilen emp id'nin pozisyonunu alacağız.

Vba Match Giriş - Çıktı

VBA'da A2 ile A9 aralığındaki Eşleşme değerini, emp id "21194" için kullanır ve konumu 5 olarak döndürür.

Vba Match Giriş - Çıktı-pozisyonu

VBA MATCH bir fonksiyon olduğundan, fonksiyonun sözdizimini anlamamız gerekir.

MATCH(Arg1, Arg2, Arg3)

VBA'da argümanlar konusunda net bir açıklık elde edemiyoruz. Ancak, bunu daha iyi anlamanız için bu ayrıntıyı açıklayalım.

  • Arama Değeri [Lookup Value](Arg1): Arama değeri, ikinci argümandaki verilen aralıktan konumunu almaya çalıştığımız değerdir.
  • Arama Aralığı Lookup Value] (Arg2): Verilen aralıkta, ilk argümanda verilen arama değerinin konumunu bulmaya çalışacağız.
  • Eşleşme Türü Lookup Value] (Arg3): Bu argümanda eşleşme türünü sağlamalıyız. Gereksinime göre aşağıdaki üç değeri sağlayabiliriz.

1 – Less Than: Sağladığınız lookup_value'dan küçük veya ona eşit olan en büyük değeri arayacak ve yaklaşık eşleşmeyi döndürecektir. lookup_array'in artan düzende (daha düşükten yükseğe veya A'dan Z'ye) düzenlenmesini gerektirir.

0 – Tam Eşleşme [Exact Match]:  Veriler nasıl düzenlenmiş veya sıralanmış olursa olsun, lookup_value ile tam eşleşmeyi arayacak ve döndürecektir.

-1 – Daha Büyük Eşleşme [Greater Match] =  Bu, sağladığınız lookup_value'dan büyük veya ona eşit olan en küçük değeri arayacak ve yaklaşık eşleşmeyi döndürecektir. lookup_array'in azalan düzende (yüksekten düşüğe veya Z'den A'ya) düzenlenmesini gerektirir.


ÖNEMLİ NOKTALAR

  • VBA MATCH fonksiyonu, arama aralığındaki arama değerinin konumunu döndürür.
  • VBA MATCH fonksiyonu çıktı değeri her zaman bir sayıdır. Bu nedenle, çıktıyı bir değişkene atadığımızda, değişkene her zaman sayısal bir veri türü atamalıyız.
  • VBA MATCH fonksiyonu, başlığa göre sütun numarasını dinamik olarak döndürmek için VLOOKUP fonksiyonunu destekleyen bir fonksiyon olarak kullanılır.
  • VBA MATCH indeksi, arama değerinin verilen aralıktaki konumudur. Aralık, satır veya sütun olabilir.
  • VBA MATCH Index, VLOOKUP fonksiyonuna alternatif olarak kullanılmak üzere birleşik bir fonksiyon olarak kullanılabilir.

VBA'da Eşleştirme Fonksiyonu Nasıl Kullanılır?

VBA MATCH fonksiyonunun adım adım uygulanmasına dair basit bir örnek gösterelim.

Örneğin Excel'deki aşağıdaki verilere bakalım.

VBA Eşleşmesi - Kullanım - Örnek

A1'den B8'e kadar bir ürün bilgisine sahibiz. D2 hücresinde ürün kimliklerinden birine sahibiz; bunun için satır numarasını bulmalıyız, yani "Ürün Kimliği" sütununda, D2 hücresine girilen verilen Ürün Kimliğinin konumunu bulmalıyız. Aşağıda listelenen adımları izleyin.

Adım 1: Makroya isim vererek alt prosedürü başlatın.

VBA Eşleştirme - Kullanım - Adım 1

Adım 2: Arama değerini atamak için bir değişken tanımlayın.

Kullanım - Adım 2

VBA eşleşme dizesi arama değeri olacağından bir dize veri türü atadık.

Adım 3: Tanımlanan değişken için D2 hücresindeki değeri atayın.

VBA Eşleştirme - Kullanım - Adım 3

Adım 4: Sonuç hücresini ayarlamak için bir değişken tanımlayın.

Kullanım - Adım 4

Adım 5: Tanımlı değişken için sonuç hücresini E2 hücresi olarak ayarlayın.

Kullanım - Adım 5

Adım 6: Şimdi, VBA MATCH fonksiyonunu uygulayın. VBA MATCH fonksiyonunun sonucunu değişken aracılığıyla nerede saklayacağımızı bildiğimizden, bunu hedef aralık değişkenine atayalım.

Kullanım - Adım 6

Not: MATCH bir çalışma sayfası fonksiyonu olduğundan, ona erişmek için “WorksheetFunction” özelliğini kullanmalıyız.

Adım 7: VBA MATCH fonksiyonunun ilk argümanı arama değeridir. Arama değerini zaten “Lookup_Value” değişkenine atadık. Dolayısıyla, değişken adını doğrudan buraya girebiliriz.

Kullanım - Adım 7

Adım 8: İkinci argüman arama aralığıdır, yani verilen arama değerinin konumunu hangi aralıkta bulmamız gerektiğidir. Bu durumda, ürün kimliğini arıyoruz, dolayısıyla arama aralığı B2 ila B8 olacaktır.

Kullanım - Adım 8

Adım 9: Son argüman eşleşme türüdür. Tam eşleşmeyi dört gözle bekliyoruz. Bu nedenle, VBA MATCH işlevindeki tam eşleşmeyi belirten 0 verebiliriz. Aşağıda, Visual Basic düzenleyici pencerenize kopyalayıp yapıştırabileceğiniz tamamlanmış kod bulunmaktadır.

Sub Match_Basic()
'D2 hücresine girilen arama değerini ayarlamak için değişken tanımlayın
Dim Lookup_Value As String
'D2 hücresinden arama değerini atayın
Lookup_Value = Range(“D2”).Value
'Sonuç hücresini ayarlamak için bir değişken tanımlayın
Dim Target_Range As Range
'Sonucu depolamamız gereken hücre olan E2'yi sonuç hücresini olarak ayarlayın
Set Target_Range = Range(“E2”)
'VBA MATCH işlevini hedef aralık değişkenine atayın
Target_Range = WorksheetFunction.Match(Lookup_Value, Range(“B2:B8”), 0)
End Sub

Bu kodu çalıştıralım. B2 ile B9 aralığındaki arama değerinin konumunu alacağız.

VBA Eşleştirme - Kullanım - Adım 9.jpg

B2 hücresinden başlayarak, arama değeri “P129” konumu 4'tür. Bu nedenle VBA MATCH fonksiyonu 4 konumunu döndürmüştür. VBA MATCH fonksiyonu tarafından verilen çıktı her zaman bir tam sayıdır.


VBA Eşleştirme Fonksiyonu Örnekleri

Örnek 1 – VLOOKUP'a Destekleyici Fonksiyon Olarak VBA MATCH Fonksiyonu

Genellikle VBA MATCH işlevi VLOOKUP excel işlevi için destekleyici bir rol oynar . VLOOKUP işlevi, girilen sütun numarasına göre belirli bir sütundan arama değerinin bilgilerini almak için kullanılır. Örneğin, aşağıdaki verilere bakın.

A1 ila D8 aralığında verilerimiz var. G1 ila J2 aralığında, A1 ila D8 veri aralığından temel tutarı, vergi tutarını ve toplam tutarı almamız gereken fatura numaralarından birine sahibiz.

VBA Eşleşmesi - Örnek 1

Örneğin, aşağıdaki VLOOKUP örneğine bakın.

VBA Eşleşmesi - Örnek 1 - vlookup

“Base Tutarı” almak için VLOOKUP işlevini kullandık. Taban tutarı için sütun numarası 2'dir. Bu nedenle, VLOOKUP işlevinde sabit kodlanmış 2'yi kullandık. Ancak, sütun numarasını başlığa göre otomatik olarak almamız gerekir. Bu sütun numarasını almak için VBA MATCH işlevini kullanırız. Aşağıdaki kod, VBA MATCH işlevini kullanarak sütun numarasını dinamik olarak alacaktır.

Sub Match_Ex1()
'Başlık değerine göre sütun numaralarını atamak için değişkenleri tanımlayın
Dim Basic_ColNo As Integer
Dim Tax_ColNo As Integer
Dim Total_ColNo As Integer
'VBA MATCH işlevini ilgili değişkene uygulayın ve her sütun adının konumunu bulun
Basic_ColNo = WorksheetFunction.Match(Range(“H1”).Value, Range(“A1:D1”), 0)
Tax_ColNo = WorksheetFunction.Match(Range(“I1”).Value, Range(“A1:D1”), 0)
Total_ColNo = WorksheetFunction.Match(Range(“J1”).Value, Range(“A1:D1”), 0)
'Bir değişken tanımlayın ve tüm veri aralığını ayarlayın
Dim Data_Range As Range
Set Data_Range = Range(“A1:D8”)
'VLOOKUP işlevini sütun numarası argümanındaki MATCH işlevi değişkenlerinin
Range(“H2”).Value = WorksheetFunction.VLookup(Range(“G2”).Value, Data_Range, Basic_ColNo, 0)
Range(“I2”).Value = WorksheetFunction.VLookup(Range(“G2”).Value, Data_Range, Tax_ColNo, 0)
Range(“J2”).Value = WorksheetFunction.VLookup(Range(“G2”).Value, Data_Range, Total_ColNo, 0)
End Sub

Bu kodu çalıştırdığımızda aşağıdaki sonucu elde edeceğiz.

VBA Eşleşmesi - Örnek 1 - Çıktı

VBA MATCH işlevi, VLOOKUP işlevi için sütun numarasını dinamik olarak döndürdü. Bu nedenle, sabit kodlanmış sütun numaralarını VLOOKUP işlevine girmedik

Örnek 2 – Başka Bir Sayfadan VBA MATCH

VBA MATCH fonksiyonu ayrıca arama değerinin konumunu başka bir sayfadan da alabilir. Önceki örnekteki aynı örnek veriyi kullanalım. Bu sefer veriyi bir sayfadan, gereksinimi ise başka bir sayfadan aldık.

VBA Eşleşmesi - Örnek 2.jpg
VBA Eşleşmesi - Örnek 2 - Sonuç Sekmesi

Şimdi gerekli değerleri veri sayfasından sonuç sayfasına getirmeliyiz. VBA MATCH fonksiyonunun sütun numaralarını veri sayfasından sonuç sayfasına getirmesi gerekir. Aşağıdaki kod aynısını yapacaktır.

Sub Match_Ex2()
'Başlık değerine göre sütun numaralarını atamak için değişkenleri tanımlayın
Dim Basic_ColNo As Integer
Dim Tax_ColNo As Integer
Dim Total_ColNo As Integer
'VBA MATCH işlevini ilgili değişkene uygulayın ve her sütun adının konumunu bulun
'Burada sütun numarasını veri sayfasından alıyoruz, dolayısıyla çalışma sayfası adı "Veri" olarak belirtiliyor
Basic_ColNo = WorksheetFunction.Match(Range("B1").Value, Worksheets("Data").Range("A1:D1"), 0)
Tax_ColNo = WorksheetFunction.Match(Range("C1").Value, Worksheets("Data").Range("A1:D1"), 0)
Total_ColNo = WorksheetFunction.Match(Range("D1").Value, Worksheets("Data").Range("A1:D1"), 0)
'Bir değişken tanımlayın ve tam veri aralığını ayarlayın
'Veri aralığı başka bir sayfada olduğundan çalışma sayfası adı "Veri" olarak belirtildi ve aralık nesnesi kullanıldı
Dim Data_Range As Range
Set Data_Range = Worksheets(“Data”).Range(“A1:D8”)
'Sütun numarası argümanındaki MATCH işlevi değişkenlerinin yardımıyla VLOOKUP işlevini uygulayın
Range(“B2”).Value = WorksheetFunction.VLookup(Range(“A2”).Value, Data_Range, Basic_ColNo, 0)
Range(“C2”).Value = WorksheetFunction.VLookup(Range(“A2”).Value, Data_Range, Tax_ColNo, 0)
Range(“D2”).Value = WorksheetFunction.VLookup(Range(“A2”).Value, Data_Range, Total_ColNo, 0)
End Sub

Bu kodu çalıştıralım ve sonucu “Sonuç” sayfasında görelim.

VBA Eşleşmesi - Örnek 2 - Sonuç

"Sonuç" sayfasında görebileceğimiz gibi değerleri "Veri" sayfasından aldık. Başka bir sayfadan değerleri almamız gerektiğinde, çalışma sayfası adını ve ardından aralığı kullanmamız gerekir.

Örnek 3 – Döngülerle VBA MATCH Fonksiyonu

Şimdiye kadar, VBA MATCH'i bir hücreye uyguladık ve sonucu aldık. Ancak, daha fazla hücremiz olduğunda her hücre için formülü yazamayız. Bu nedenle, her hücreyi dolaşmak ve değerleri almak için aynı kodu kullanmak için döngüler kullanmalıyız. Örneğin, Excel'deki aşağıdaki verilere bakın.

VBA Eşleşmesi - Örnek 3

Bilgi almak için birden fazla hücremiz var, yani G2'den G4'e kadar hücreler. Bu durumda, döngüyü kullanmamız gerekir; aşağıdaki kod "for next döngülerini" kullanacak ve bilgiyi orijinal veri aralığından, yani A1'den D8'e kadar alacaktır.

Sub Match_Ex3()
'Başlık değerine göre sütun numaralarını atamak için değişkenleri tanımlayın
Dim Basic_ColNo As Integer
Dim Tax_ColNo As Integer
Dim Total_ColNo As Integer
'VBA MATCH işlevini ilgili değişkene uygulayın ve her sütun adının konumunu bulun
'Burada sütun numarasını veri sayfasından alıyoruz, dolayısıyla çalışma sayfası adı "Veri" olarak belirtiliyor
Basic_ColNo = WorksheetFunction.Match(Range("H1").Value, Worksheets("Data").Range("A1:D1"), 0)
Tax_ColNo = WorksheetFunction.Match(Range("I1").Value, Worksheets("Data").Range("A1:D1"), 0)
Total_ColNo = WorksheetFunction.Match(Range("J1").Value, Worksheets("Data").Range("A1:D1"), 0)
'Bir değişken tanımlayın ve tam veri aralığını ayarlayın
'Veri aralığı başka bir sayfada olduğundan çalışma sayfası adı "Veri" olarak belirtildi ve aralık nesnesi kullanıldı
Dim Data_Range As Range
Set Data_Range = Worksheets(“Data”).Range(“A1:D8”)
'Son kullanılan satırı bulmak için değişken tanımlayın
Dim LR As Long
LR = Cells(Rows.Count, 7).End(xlUp).Row
'Bir sonraki döngüde kullanılacak değişkeni tanımlayın
Dim k As Long
For k = 2 To LR
Cells(k, 8).Value = WorksheetFunction.VLookup(Cells(k, 7).Value, Data_Range, Basic_ColNo, 0)
Cells(k, 9).Value = WorksheetFunction.VLookup(Cells(k, 7).Value, Data_Range, Tax_ColNo, 0)
Cells(k, 10).Value = WorksheetFunction.VLookup(Hücreler(k, 7).Value, Veri_Aralığı, Toplam_Sütun_No, 0)
Next k
End Sub

Kodu çalıştırdığımızda listelenen tüm fatura numaralarının değerleri alınacaktır.

Örnek 3 - Çıktı

Dikkat Edilmesi Gereken Önemli Noktalar

  • VBA MATCH bir çalışma sayfası fonksiyonudur. Bu nedenle, buna çalışma sayfası fonksiyonu özelliğini kullanarak erişmeliyiz.
  • VBA MATCH fonksiyonu, arama değeri arama aralığındaki değerle aynı değilse #N/A (Kullanılamaz) hata değerini döndürür.
  • VBA Eşleştirme çoklu ölçütünü uygulamak istediğimizde, hem arama değerinde hem de arama aralığında birden fazla değeri birleştirmemiz gerekir.

VBA MATCH işlevi büyük/küçük harfe duyarlı bir formül değildir. Örneğin, “Excel” ve “Excel” metinleri aynıdır.


1. Excel VBA'da INDEX MATCH fonksiyonu nasıl kullanılır?

INDEX ve MATCH'i birleştirmek VLOOKUP işlevine bir alternatif olabilir. Örneğin, Excel'deki şu verilere bakın. Örneğin, Excel'deki şu verilere bakın.

VBA Eşleşmesi - SSS 1

A1 ile B8 aralığında verilerimiz var. D2 hücresinde bir arama değerimiz (şehir kodu) var ve E2 hücresinde bu şehir kodu için satış değerini almalıyız.

Aşağıdaki INDEX ve MATCH satış bilgilerini alacaktır.

Sub Match_FAQ()
'EŞLEŞTİRME işlevi aracılığıyla arama değerinin konumunu bulmak için bir değişken tanımlayın
Dim Match_Function_Result As Integer
Match_Function_Result = WorksheetFunction.Match(Range(“D2”).Value, Range(“A2:A8”), 0)
'Satış değeri
Range(“E2”).Value = WorksheetFunction.Index(Range(“B2:B8”), Match_Function_Result)
End Sub

SSS 1 - Çıktı

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...