VBA String Karşılaştırması - İki Dize Değeri Nasıl Karşılaştırılır?

Excel VBA Dize Karşılaştırması

VBA'daki iki dizeyi karşılaştırmak için yerleşik bir işleve sahibiz, yani " StrComp ". Bunu " String Comparison " olarak okuyabiliriz , bu işlev yalnızca VBA ile kullanılabilir ve bir çalışma sayfası işlevi olarak kullanılamaz. Herhangi iki dizgeyi karşılaştırır ve sonuçları "Sıfır (0)" olarak döndürür, eğer her iki dizge de eşleşiyorsa ve sağlanan her iki dizge de eşleşmiyorsa , sonuç olarak "Bir (1)" elde ederiz .

VBA veya excel'de birçok farklı senaryo ile karşı karşıyayız. Böyle bir senaryo, "iki dize değerini karşılaştırmaktır". Normal bir çalışma sayfasında, bunları birden fazla yolla yapabiliriz, ancak VBA'da bunu nasıl yaparsınız?

Aşağıda “StrComp” işlevinin sözdizimi verilmiştir.

İlk olarak, iki argüman oldukça basittir,

  • için dize 1, öncelikle değer Karşılaştırdığımız ne sağlamanız gerekmektedir ve
  • için dize 2, biz karşılaştırdığınız ikinci değer sağlamanız gerekir.
  • (Karşılaştır) bu, StrComp işlevinin isteğe bağlı bağımsız değişkenidir. Bu, büyük / küçük harfe duyarlı karşılaştırmayı karşılaştırmak istediğimizde faydalıdır. Örneğin, bu bağımsız değişkende "Excel", "EXCEL" e eşit değildir çünkü bu sözcüklerin ikisi de büyük / küçük harfe duyarlıdır.

Burada üç değer sağlayabiliriz.

  • " İkili Karşılaştırma " için Sıfır (0) , yani "Excel", "EXCEL" e eşit değildir. Büyük / küçük harfe duyarlı karşılaştırma için 0 sağlayabiliriz.
  • " Metin Karşılaştırma " için bir (1) , yani "Excel", "EXCEL" e eşittir. Bu, büyük / küçük harfe duyarlı olmayan bir karşılaştırmadır.
  • İki (2) bu yalnızca veritabanı karşılaştırması içindir.

"StrComp" işlevinin sonuçları varsayılan DOĞRU veya YANLIŞ olmayıp değişiklik gösterir. Aşağıda "StrComp" işlevinin farklı sonuçları verilmiştir.

  • Sağlanan dizeler eşleşirse sonuç olarak "0" alacağız .
  • Sağlanan dizeler eşleşmiyorsa "1" alacağız ve sayısal eşleşme durumunda, Dize 1 dizge 2'den büyükse 1 elde edeceğiz.
  • Dize 1 sayısı, dize 2 sayısından küçükse "-1" alacağız .

VBA'da Dize Karşılaştırması Nasıl Yapılır?

Örnek 1

" Bangalore " ile " BANGALORE " dizesini eşleştireceğiz .

İlk olarak, iki dize değerini depolamak için dize olarak iki VBA değişkenini bildirin.

Kod:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String End Sub

Bu iki değişken için iki dize değeri saklayın.

Kod:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" End Sub

Şimdi " StrComp " işlevinin sonucunu saklamak için bir değişken daha bildirin .

Kod:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String End Sub

Bu değişken için "StrComp" işlevini açın.

Kod:

Alt String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (End Sub

"Dize1" ve "Dize2" için, değişkenler aracılığıyla zaten değerler atadık, bu nedenle sırasıyla değişken adlarını girin.

Kod:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Değer1, Değer2, End Sub

İşlevin son bölümü, bu "vbTextCompare" seçeneği için "Karşılaştır " dır.

Kod:

Alt String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) End Sub

Şimdi VBA'daki mesaj kutusunda "Son Sonuç" değişkenini gösterin .

Kod:

Alt String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub

Tamam, kodu çalıştırıp sonucu görelim.

Çıktı:

Hem "Bangalore" hem de "BANGALORE" dizgeleri aynı olduğundan, sonucu 0 olarak aldık, yani eşleştirme. Bağımsız değişkeni "vbTextCompare" olarak sağladığımız için her iki değer de büyük / küçük harfe duyarlıdır, büyük / küçük harfe duyarlı eşleşmeyi yok saymıştır ve yalnızca değerleri eşleştirmiştir, bu nedenle her iki değer de aynıdır ve sonuç 0'dır, yani DOĞRU.

Kod:

Alt String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub

Örnek 2

For the same code, we will change the compare method from “vbTextCompare” to “vbBinaryCompare.”

Code:

Sub String_Comparison_Example2() Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now run the code and see the result.

Output:

Even though both the strings are the same, we got the result as 1, i.e., Not Matching because we have applied the compare method as “vbBinaryCompare,” which compares two values as case sensitive.

Example #3

Now we will see how to compare numerical values. For the same code, we will assign different values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Both the values are 500, and we will get 0 as a result because both the values are matched.

Output:

Now I will change the Value1 number from 500 to 100.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

We know Value1 & Value2 aren’t the same, but the result is -1 instead of 1 because for numerical comparison when the String 1 value is greater than String 2, we will get this -1.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now I will reverse the values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 1000 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

This is not special. If not match, we will get 1 only.

Things to Remember here

  • (Compare) argument of “StrComp” is optional, but in case of case sensitive match, we can utilize this, and the option is “vbBinaryCompare.”
  • The result of numerical values is slightly different in case String 1 is greater than string 2, and the result will be -1.
  • Results are 0 if matched and 1 if not matched.

Recommended Articles

Bu, VBA dizesi karşılaştırması için bir kılavuz olmuştur. Burada, excel VBA'da StrComp işlevini kullanarak iki dize değerini örneklerle karşılaştırıp bir excel şablonu indirmeyi tartışıyoruz. Ayrıca Excel VBA ile ilgili diğer makalelere de bakabilirsiniz -

  • VBA Dize İşlevleri Kılavuzu
  • VBA Dizeyi Diziye Böl
  • VBA SubString Yöntemleri
  • VBA Metni

Ilginç makaleler...