VBA StrComp - StrComp İşlevini kullanarak VBA'daki Dizeleri Karşılaştırın

Excel VBA StrComp İşlevi

VBA StrComp , iki dize değerinin aynı olup olmadığını karşılaştırmak için kullanılan yerleşik bir işlevdir. Bununla birlikte, sonuçlar çalışma sayfasındaki gibi varsayılan DOĞRU veya YANLIŞ değildir, aksine farklıdır.

Sonuçlara bakmadan önce, size önce StrComp işlevinin sözdizimini göstermeme izin verin.

  • Dize 1: Dize 1, karşılaştırdığımız ilk dize veya değerdir.
  • Dize 2: Dize 2, Dize 1 ile karşılaştırdığımız ikinci dize veya değerdir .
  • Karşılaştırın: Burada üç seçenek sunabiliriz.
      • 0 = İkili Karşılaştırma. Bu, büyük / küçük harfe duyarlı hesaplamalar gerçekleştirir. Örneğin, "Merhaba", "MERHABA" ile aynı değildir çünkü her iki kelime de farklıdır. Bu parametreyi yok sayarsanız, bu varsayılan değerdir. vbBinaryCompare
      • 1 = Metin Karşılaştırma. Bu seçenek, büyük / küçük harfe duyarlı olmayan hesaplamaları gerçekleştirir. Örneğin, her iki kelime de farklı olsa da "Merhaba" "HELLO" olayına eşittir. vbTextCompare
      • 2 = Erişim Karşılaştırma. Bu, veritabanı karşılaştırmasını gerçekleştirir.

String Comparison (StrComp) Fonksiyonunun Sonuçları

Çalışma sayfasındaki iki değeri karşılaştırdığımızda söylediğim gibi, sonucu DOĞRU veya YANLIŞ olarak alıyoruz. Ancak VBA dize karşılaştırma işlevi ile sonuçlar aynı değildir.

  • Dize 1 , Dize 2'ye eşit olduğunda sıfır (0) elde ederiz .
  • Biz almak bir (1) Dize 1 değeri büyüktür Dize 2 Değer .
  • String 1 değeri String 2'den küçük olduğunda eksi bir (-1) elde ederiz.
  • String 1 veya String 2 değeri NULL olduğunda NULL elde ederiz .

VBA StrComp İşlevini kullanma örnekleri

Örnek 1

Basit bir örnekle başlayalım. Örneğin, iki değeri karşılaştıracağız, yani "Excel VBA" ve "Excel VBA."

Kod:

Sub StrComp_Example1 () Dim FirstValue As String 'String 1 değerini Dim SecondValue As String' Depolamak için String 2 değerini Dim Result As String 'StrComp formülünün Sonucunu Depolamak için FirstValue = "Excel VBA"' String 1 değerini atayın SecondValue = "Excel VBA" 'Dize 2 değerini atayın Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' StrComp işlevini uygula MsgBox Result 'Sonucu mesaj kutusunda göster End Sub

Bu kodu çalıştırdığınızda, biz Zero alacak (0) hem çünkü sonuç olarak Dize 1 ve 2 String değerleri aynıdır.

Örnek 2

Şimdi iki kelimenin durumlarını değiştireceğim.

Dize 1 = Excel Vba

Dize 2 = Excel VBA

Kod:

Sub StrComp_Example2 () Dim FirstValue As String 'String 1 değerini Dim SecondValue As String' Depolamak için String 2 değerini Dim Result As String 'StrComp formülünün Sonucunu Saklamak için FirstValue = "Excel Vba"' String 1 değerini atayın SecondValue = "Excel VBA" 'Dize 2 değerini atayın Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' StrComp işlevini uygula MsgBox Result 'Sonucu mesaj kutusunda göster End Sub

Bu kodu çalıştırdığımda 1 elde edeceğiz çünkü Compare argümanını " vbBinaryCompare " olarak sağladığımız için, büyük / küçük harfe duyarlı karakterleri kontrol edecek.

Şimdi değişecek karşılaştır “seçeneğini vbBinaryCompare” “için vbTextCompare”

Kod:

Sub StrComp_Example3 () Dim FirstValue As String 'String 1 değerini Dim SecondValue As String' Depolamak için String 2 değerini Dim Result As String 'StrComp formülünün Sonucunu Saklamak için FirstValue = "Excel Vba"' String 1 değerini atayın SecondValue = "Excel VBA" 'Dize 2 değerini atayın Result = StrComp (FirstValue, SecondValue, vbTextCompare)' StrComp işlevini uygula MsgBox Result 'Sonucu mesaj kutusunda göster End Sub

Bu Karşılaştırma ile sıfır (0) elde ederiz çünkü vbaTextCompare büyük / küçük harfe duyarlı kelimeleri yok sayar.

Örnek 3

IF Koşullu VBA StrComp Vaka Çalışması

Aşağıdaki resimdeki gibi verilere sahip olduğunuzu varsayın.

Dize 1'i Dize 2 ile karşılaştırmalı ve her ikisi de aynıysa Sonuca "Tam" olarak ulaşmalıyız, aksi takdirde sonuç "Tam Değil" olmalıdır.

Aşağıdaki kod işi bizim için yapacak.

Kod:

Alt StrComp_Example4 () Dim Sonucu Dize Dim I As Integer For i = 2 to 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value) If Result = 0 O O halde Hücreler (i, 3 ) .Value = "Kesin" Başka Hücreler (i, 3) .Value = "Tam Değil" Sonraki ise End Sub

Excel'de yukarıdaki VBA kodunu çalıştırdığımda aşağıdaki sonucu alacağız.

C4 hücresine bakarsanız Dize 1 ve Dize 2 aynıysa, ancak karakterler büyük / küçük harfe duyarlıdır, dolayısıyla sonuç "Tam Değil" olur. Bu sorunun üstesinden gelmek için, vbTextCompare olarak Karşılaştır'ı sağlamamız gerekir.

C4 hücresi için sonucu "Tam" olarak almak için değiştirilmiş kod aşağıdadır.

Kod:

Sub StrComp_Example4 () Dim Result As String Dim I As Integer For i = 2 To 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value, vbTextCompare) Eğer Result = 0 ise Sonra Hücreler (i , 3) .Value = "Kesin" Başka Hücreler (i, 3) .Value = "Tam Değil" Sonlandırırsa End Sub

Bu kod aşağıdaki sonucu döndürecektir.

Ilginç makaleler...