VBA StrComp

Funkcja Excel VBA StrComp

VBA StrComp to wbudowana funkcja służąca do porównywania, czy dwie wartości ciągów są takie same, czy nie. Jednak wyniki nie są domyślnie PRAWDA lub FAŁSZ, jak w arkuszu, a jest inaczej.

Zanim przyjrzymy się wynikom, pokażę najpierw składnię funkcji StrComp.

  • Ciąg 1: Ciąg 1 to pierwszy ciąg lub wartość, którą porównujemy.
  • Ciąg 2: Ciąg 2 to drugi ciąg lub wartość, którą porównujemy z ciągiem 1 .
  • Porównaj: możemy podać tutaj trzy opcje.
      • 0 = Porównanie binarne. Spowoduje to wykonanie obliczeń uwzględniających wielkość liter. Na przykład „Cześć” nie jest równe „HELLO”, ponieważ oba przypadki słów są różne. Jest to wartość domyślna, jeśli zignorujesz ten parametr. vbBinaryCompare
      • 1 = Porównanie tekstu. Ta opcja wykonuje obliczenia bez rozróżniania wielkości liter. Na przykład „Hello” jest równe zdarzeniu „HELLO”, chociaż oba przypadki słów są różne. vbTextCompare
      • 2 = Porównanie dostępu. Wykonuje porównanie bazy danych.

Wyniki funkcji porównania ciągów (StrComp)

Jak powiedziałem, porównując dwie wartości w arkuszu, otrzymujemy wynik jako PRAWDA lub FAŁSZ. Ale w przypadku funkcji porównywania ciągów VBA wyniki nie są takie same.

  • Otrzymujemy zero (0), gdy Ciąg 1 jest równy Ciąg 2.
  • Dostajemy jeden (1), gdy String 1 wartość jest większa niż String 2 Value .
  • Otrzymujemy minus jeden (-1), gdy wartość String 1 jest mniejsza niż String 2
  • Otrzymujemy NULL, gdy wartość String 1 lub String 2 ma wartość NULL.

Przykłady użycia funkcji VBA StrComp

Możesz pobrać ten szablon VBA StrComp Excel tutaj - szablon VBA StrComp Excel

Przykład 1

Zacznijmy od prostego przykładu. Na przykład porównamy dwie wartości, tj. „Excel VBA” i „Excel VBA”.

Kod:

 Sub StrComp_Example1 () Dim FirstValue As String 'Przechowywanie wartości String 1 Dim SecondValue As String' Przechowywanie wartości String 2 Dim Result As String 'Przechowywanie wyniku formuły StrComp FirstValue = "Excel VBA"' Przypisywanie wartości ciągu 1 SecondValue = "Excel VBA" 'Przypisz wartość ciągu 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Zastosuj funkcję StrComp MsgBox Result 'Pokaż wynik w oknie komunikatu End Sub 

Kiedy uruchomię ten kod, otrzymamy jako wynik Zero (0), ponieważ wartości String 1 i String 2 są takie same.

Przykład nr 2

Teraz zmienię przypadki dwóch słów.

Ciąg 1 = Excel Vba

Ciąg 2 = Excel VBA

Kod:

 Sub StrComp_Example2 () Dim FirstValue As String 'Przechowywanie wartości String 1 Dim SecondValue As String' Przechowywanie wartości String 2 Dim Result As String 'Przechowywanie wyniku formuły StrComp FirstValue = "Excel Vba"' Przypisywanie wartości ciągu 1 SecondValue = "Excel VBA" 'Przypisz wartość ciągu 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Zastosuj funkcję StrComp MsgBox Result 'Pokaż wynik w oknie komunikatu End Sub 

Kiedy uruchomię ten kod, otrzymamy 1, ponieważ ponieważ podaliśmy argument Porównaj jako „ vbBinaryCompare” , będzie on sprawdzał, czy nie ma znaków z rozróżnianiem wielkości liter.

Teraz zmienię opcję Porównaj z „ vbBinaryCompare” na „ vbTextCompare”

Kod:

 Sub StrComp_Example3 () Dim FirstValue As String 'Przechowywanie wartości String 1 Dim SecondValue As String' Przechowywanie wartości String 2 Dim Result As String 'Przechowywanie wyniku formuły StrComp FirstValue = "Excel Vba"' Przypisywanie wartości ciągu 1 SecondValue = "Excel VBA" 'Przypisz wartość ciągu 2 Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Zastosuj funkcję StrComp MsgBox Result 'Pokaż wynik w oknie komunikatu End Sub 

Dzięki temu porównaniu otrzymamy zero (0), ponieważ vbaTextCompare ignoruje słowa z uwzględnieniem wielkości liter.

Przykład nr 3

Studium przypadku VBA StrComp z warunkiem IF

Załóżmy, że masz dane takie jak na poniższym obrazku.

Musimy porównać Ciąg 1 z Ciągiem 2 i otrzymać Wynik jako „Dokładny”, jeśli oba są takie same, w przeciwnym razie wynik powinien być „Niedokładny”.

Poniższy kod wykona zadanie za nas.

Kod:

 Sub StrComp_Example4 () Dim Wynik As String Dim I As Integer For i = 2 To 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value) Jeśli Result = 0 Then Cells (i, 3 ) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

Po uruchomieniu powyższego kodu VBA w Excelu otrzymamy poniższy wynik.

Jeśli spojrzysz na komórkę C4 Ciąg 1 i Ciąg 2 są takie same, ale w znakach jest rozróżniana wielkość liter, więc wynikiem jest „Niedokładne”. Aby rozwiązać ten problem, musimy dostarczyć Porównaj jako vbTextCompare.

Poniżej znajduje się zmodyfikowany kod, aby uzyskać wynik jako „Dokładny” dla komórki C4.

Kod:

 Sub StrComp_Example4 () Dim Wynik As String Dim I As Integer For i = 2 To 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value, vbTextCompare) If Result = 0 Then Cells (i , 3) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

Ten kod zwróci poniższy wynik.