Porównanie ciągów VBA - Jak porównać dwie wartości ciągów?

Porównanie ciągów Excel VBA

Aby porównać dwa ciągi znaków w VBA, mamy wbudowaną funkcję, tj. „ StrComp ”. Możemy to odczytać jako „ Porównanie ciągów ”, ta funkcja jest dostępna tylko z VBA i nie jest dostępna jako funkcja arkusza. Porównuje dowolne dwa ciągi i zwraca wyniki jako „Zero (0)”, jeśli oba ciągi są zgodne i jeśli oba podane ciągi nie są zgodne, otrzymamy wynik „Jeden (1)” .

W VBA lub Excelu mamy do czynienia z wieloma różnymi scenariuszami. Jednym z takich scenariuszy jest „porównanie dwóch wartości ciągów”. W zwykłym arkuszu roboczym możemy to zrobić na wiele sposobów, ale w VBA, jak to zrobić?

Poniżej znajduje się składnia funkcji „StrComp”.

Po pierwsze, dwa argumenty są dość proste:

  • w przypadku ciągu 1 musimy podać pierwszą porównywalną wartość i
  • w przypadku ciągu 2 musimy podać drugą porównywalną wartość.
  • (Porównaj) to jest opcjonalny argument funkcji StrComp. Jest to przydatne, gdy chcemy porównać porównanie uwzględniające wielkość liter. Na przykład w tym argumencie „Excel” nie jest równy „EXCEL”, ponieważ w obu tych słowach jest rozróżniana wielkość liter.

W tym miejscu możemy podać trzy wartości.

  • Zero (0) dla „ Porównanie binarne ”, tj. „Excel”, nie jest równe „EXCEL”. Aby porównać wielkość liter, możemy podać 0.
  • Jeden (1) dla „ Porównanie tekstu ”, czyli „Excel”, to „EXCEL”. To porównanie nie uwzględnia wielkości liter.
  • Dwa (2) to tylko do porównania bazy danych.

Wyniki funkcji „StrComp” nie mają domyślnie wartości PRAWDA lub FAŁSZ, ale są różne. Poniżej znajdują się różne wyniki funkcji „StrComp”.

  • Otrzymamy „0”, jeśli podane ciągi są zgodne.
  • Otrzymamy „1”, jeśli podane ciągi nie są zgodne, aw przypadku dopasowania liczbowego otrzymamy 1, jeśli Ciąg 1 jest większy niż łańcuch 2.
  • Otrzymamy „-1”, jeśli liczba w ciągu 1 jest mniejsza niż liczba w ciągu 2.

Jak przeprowadzić porównanie ciągów w VBA?

Przykład 1

Dopasujemy „ Bangalore ” do ciągu „ BANGALORE ”.

Najpierw zadeklaruj dwie zmienne VBA jako ciąg do przechowywania dwóch wartości ciągu.

Kod:

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

Dla tych dwóch zmiennych zapisz dwie wartości łańcuchowe.

Kod:

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

Teraz zadeklaruj jeszcze jedną zmienną, aby zapisać wynik funkcji „ StrComp ”.

Kod:

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

Dla tej zmiennej otwórz funkcję „StrComp”.

Kod:

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

Dla „Ciąg1” i „Ciąg2” już przypisaliśmy wartości poprzez zmienne, więc wprowadź odpowiednio nazwy zmiennych.

Kod:

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

Ostatnią częścią funkcji jest „Porównaj” dla tego wyboru „vbTextCompare”.

Kod:

Sub 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

Teraz pokaż zmienną „Wynik końcowy” w oknie komunikatu w VBA.

Kod:

Sub 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

Ok, uruchommy kod i zobaczmy wynik.

Wynik:

Ponieważ oba ciągi „Bangalore” i „BANGALORE” są takie same, otrzymaliśmy wynik jako 0, czyli dopasowanie. W obu wartościach jest rozróżniana wielkość liter, ponieważ podaliśmy argument jako „vbTextCompare” , zignorował on dopasowanie uwzględniające wielkość liter i dopasował tylko wartości, więc obie wartości są takie same, a wynikiem jest 0, tj. PRAWDA.

Kod:

Sub 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

Przykład nr 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

To był przewodnik po porównaniu ciągów VBA. Tutaj omawiamy, jak porównać dwie wartości ciągów za pomocą funkcji StrComp w programie Excel VBA wraz z przykładami i pobrać szablon programu Excel. Możesz również rzucić okiem na inne artykuły związane z Excel VBA -

  • Przewodnik po funkcjach ciągów VBA
  • VBA Podziel ciąg na tablicę
  • Metody podciągów VBA
  • Tekst VBA

Interesujące artykuły...