VBA StrComp - Сравнете низовете във VBA, като използвате функцията StrComp

Функция на Excel VBA StrComp

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

Преди да разгледаме резултатите, нека първо да ви покажа синтаксиса на функцията StrComp.

  • String 1: String 1 е първият низ или стойност, която сравняваме.
  • String 2: String 2 е вторият низ или стойност, която сравняваме спрямо String 1 .
  • Сравнение: Тук можем да предоставим три опции.
      • 0 = двоично сравнение. Това извършва изчисляване на регистъра. Например „Hello“ не е равно на „HELLO“, защото и двете думи са различни. Това е стойността по подразбиране, ако пренебрегнете този параметър. vbBinaryCompare
      • 1 = Сравнение на текст. Тази опция изпълнява изчисленията, които не са чувствителни към малки и големи букви. Например „Hello“ е равно на събитието „HELLO“, въпреки че и двете думи са различни. vbTextCompare
      • 2 = Достъп за сравнение. Това извършва сравнение на базата данни.

Резултати от функцията за сравнение на низове (StrComp)

Както казах, когато сравняваме две стойности в работния лист, получаваме резултата като TRUE или FALSE. Но с функцията за сравнение на низове VBA резултатите не са еднакви.

  • Получаваме нула (0), когато String 1 е равен на String 2.
  • Ние получаваме един (1), когато String 1 стойност е по-голяма от String 2 стойност .
  • Получаваме минус едно (-1), когато стойността на String 1 е по-малка от String 2
  • Получаваме NULL, когато стойността String 1 или String 2 е NULL.

Примери за използване на функцията VBA StrComp

Пример # 1

Нека започнем с прост пример. Например ще сравним две стойности, т.е. „Excel VBA“ и „Excel VBA“.

Код:

Sub StrComp_Example1 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Резултат от формулата StrComp FirstValue = "Excel VBA"' Присвояване на String 1 value SecondValue = "Excel VBA" 'Присвояване на стойността String 2 Резултат = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Прилагане на функцията StrComp MsgBox Резултат 'Показване на резултата в полето за съобщение End Sub

Когато стартирам този код, ще получим нула (0) като резултат, тъй като стойностите на String 1 и String 2 са еднакви.

Пример # 2

Сега ще сменя регистрите на две думи.

Низ 1 = Excel Vba

Низ 2 = Excel VBA

Код:

Sub StrComp_Example2 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Result of the StrComp formula FirstValue = "Excel Vba"' Присвояване на String 1 value SecondValue = "Excel VBA" 'Присвояване на стойността String 2 Резултат = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Прилагане на функцията StrComp MsgBox Резултат 'Показване на резултата в полето за съобщение End Sub

Когато стартирам този код, ще получим 1, тъй като, тъй като предоставихме аргумента за сравнение като „ vbBinaryCompare“, той ще провери за чувствителни към регистъра символи.

Сега ще променя опцията за сравнение от „ vbBinaryCompare“ на „ vbTextCompare“

Код:

Sub StrComp_Example3 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Резултат от формулата StrComp FirstValue = "Excel Vba"' Присвояване на String 1 value SecondValue = "Excel VBA" 'Присвояване на стойността String 2 Резултат = StrComp (FirstValue, SecondValue, vbTextCompare)' Прилагане на функцията StrComp MsgBox Резултат 'Показване на резултата в полето за съобщение End Sub

С това сравнение ще получим нула (0), тъй като vbaTextCompare игнорира буквите, чувствителни към малки и големи букви.

Пример # 3

Казус на VBA StrComp с IF условие

Да приемем, че разполагате с данни като изображението по-долу.

Трябва да сравним String 1 с String 2 и да стигнем до Резултата като „Точно“, ако и двете са еднакви, в противен случай резултатът трябва да бъде „Not Exact“.

Кодът по-долу ще свърши работа за нас.

Код:

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) Ако Резултат = 0 Тогава клетки (i, 3 ) .Value = "Точно" Други клетки (i, 3) .Value = "Не е точно" End, ако Next i End Sub

Когато стартирам горния код на VBA в Excel, ще получим резултата по-долу.

Ако погледнете клетката C4, низ 1 и низ 2 са еднакви, но символите са чувствителни към малки и големи букви, така че резултатът е „Not Exact“. За да преодолеем този проблем, трябва да предоставим Сравнението като vbTextCompare.

По-долу е модифицираният код, за да се получи резултатът „Точен“ за клетката C4.

Код:

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) Ако Резултат = 0 Тогава клетки (i , 3) .Value = "Точно" Други клетки (i, 3) .Value = "Неточно" Край, ако следващ i Край Sub

Този код ще върне резултата по-долу.

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