Сравнение на низове от VBA - Как да сравним две низови стойности?

Сравнение на низове в Excel VBA

За сравнение на два низа във VBA имаме вградена функция, т.е. “ StrComp ”. Това можем да го прочетем като „ Сравнение на низове “, тази функция е достъпна само с VBA и не е налична като функция на работен лист. Той сравнява всеки два низа и връща резултатите като „Нула (0)“, ако и двата низа съвпадат и ако и двата предоставени низа не съвпадат, ще получим „Един (1)“ като резултат.

Във VBA или Excel се сблъскваме с много различни сценарии. Един такъв сценарий е „сравняване на две низови стойности“. В обикновен работен лист можем да направим тези множество начини, но как се прави това във VBA?

По-долу е синтаксисът на функцията “StrComp”.

Първо, два аргумента са съвсем прости,

  • за String 1 трябва да предоставим първата стойност, която сравняваме и
  • за String 2 трябва да предоставим втората стойност, която сравняваме.
  • (Сравнение) това е незадължителният аргумент на функцията StrComp. Това е полезно, когато искаме да сравним сравнението между регистрите и регистрите. Например в този аргумент „Excel“ не е равен на „EXCEL“, тъй като и двете думи са чувствителни към малки и големи букви.

Тук можем да предоставим три стойности.

  • Нула (0) за „ Binary Compare “, т.е. „Excel“, не е равна на „EXCEL“. За сравнение с големи и малки букви можем да предоставим 0.
  • Един (1) за „ Сравнение на текст “, т.е. „Excel“, е равен на „EXCEL“. Това е сравнение, различно от малки и големи букви.
  • Две (2) това само за сравнение на база данни.

Резултатите от функцията “StrComp” не са по подразбиране TRUE или FALSE, но варират. По-долу са различните резултати от функцията “StrComp”.

  • Ще получим „0“ като резултат, ако предоставените низове съвпадат.
  • Ще получим „1“, ако предоставените низове не съвпадат, а в случай на числово съвпадение, ще получим 1, ако String 1 е по-голям от низ 2.
  • Ще получим „-1“, ако числото на низа 1 е по-малко от числото на низа 2.

Как да извърша сравнение на низове във VBA?

Пример # 1

Ще съчетаем „ Бангалор “ срещу низа „ БАНГАЛОР “.

Първо, декларирайте две променливи VBA като низ за съхраняване на две низови стойности.

Код:

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

За тези две променливи съхранявайте две низови стойности.

Код:

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

Сега декларирайте още една променлива, за да съхраните резултата от функцията “ StrComp ”.

Код:

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

За тази променлива отворете функцията “StrComp”.

Код:

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

За „String1“ и „String2“ вече сме задали стойности чрез променливи, така че въведете имена на променливи, съответно.

Код:

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

Последната част на функцията е „Сравнение“ за този избор „vbTextCompare“.

Код:

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

Сега покажете променливата „Краен резултат“ в полето за съобщения във VBA.

Код:

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

Добре, нека пуснем кода и ще видим резултата.

Изход:

Тъй като и двата низа „Бангалор“ и „БАНГАЛОР“ са еднакви, резултатът е 0, т.е. съвпадение. И двете стойности са чувствителни към малки и малки букви, тъй като ние сме предоставили аргумента като “vbTextCompare”, той е игнорирал съвпадение с чувствителност към регистъра и съответства само на стойности, така че и двете стойности са еднакви и резултатът е 0, т.е. TRUE.

Код:

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

Пример # 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

Това е ръководство за сравнение на низовете на VBA. Тук обсъждаме как да сравняваме две низови стойности с помощта на функцията StrComp в Excel VBA заедно с примери и да изтегляме шаблон на Excel. Може да разгледате и други статии, свързани с Excel VBA -

  • Ръководство за низови функции на VBA
  • VBA разделен низ в масив
  • Методи за поднизове на VBA
  • VBA текст

Интересни статии...