Porovnání řetězců VBA - Jak porovnat dvě řetězcové hodnoty?

Porovnání řetězců VBA aplikace Excel

Pro porovnání dvou řetězců ve VBA máme vestavěnou funkci, tj. „ StrComp “. Toto můžeme číst jako „ Srovnání řetězců “, tato funkce je k dispozici pouze s VBA a není k dispozici jako funkce listu. Porovná libovolné dva řetězce a vrátí výsledky jako „Zero (0)“, pokud se oba řetězce shodují, a pokud se oba dodané řetězce neshodují, dostaneme jako výsledek „One (1)“ .

Ve VBA nebo Excel čelíme spoustě různých scénářů. Jedním z takových scénářů je „porovnání dvou řetězcových hodnot“. V běžném listu můžeme dělat tyto různé způsoby, ale jak to udělat ve VBA?

Níže je uvedena syntaxe funkce „StrComp“.

Za prvé, dva argumenty jsou celkem jednoduché,

  • pro řetězec 1 musíme zadat, jakou první hodnotu porovnáváme a
  • pro řetězec 2 musíme zadat druhou hodnotu, kterou porovnáváme.
  • (Porovnat) toto je volitelný argument funkce StrComp. To je užitečné, když chceme porovnat srovnání malých a velkých písmen. Například v tomto argumentu se „Excel“ nerovná „EXCEL“, protože obě tato slova rozlišují velká a malá písmena.

Zde můžeme zadat tři hodnoty.

  • Nula (0) pro „ Binární porovnání “, tj. „Excel“, se nerovná „EXCEL“. Pro srovnání malých a velkých písmen můžeme dodat 0.
  • Jeden (1) pro „ Porovnání textu “, tj. „Excel“, se rovná „EXCEL“. Toto srovnání není citlivé na velká a malá písmena.
  • Dva (2) pouze pro srovnání databáze.

Výsledky funkce „StrComp“ nemají výchozí hodnotu PRAVDA nebo NEPRAVDA, ale liší se. Níže jsou uvedeny různé výsledky funkce „StrComp“.

  • Výsledkem bude „0“ , pokud se dodané řetězce shodují.
  • Dostaneme „1“, pokud se zadané řetězce neshodují, a v případě numerické shody dostaneme 1, pokud je řetězec 1 větší než řetězec 2.
  • Dostaneme „-1“, pokud je číslo řetězce 1 menší než číslo řetězce 2.

Jak provést porovnání řetězců ve VBA?

Příklad č. 1

Porovnáme „ Bangalore “ s řetězcem „ BANGALORE “.

Nejprve deklarujte dvě proměnné VBA jako řetězec pro uložení dvou hodnot řetězce.

Kód:

Sub String_Comparison_Example1 () Dim Hodnota1 Jako řetězec Dim Hodnota2 Jako řetězec Konec Sub

U těchto dvou proměnných uložte dvě řetězcové hodnoty.

Kód:

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

Nyní deklarujte ještě jednu proměnnou pro uložení výsledku funkce „ StrComp “.

Kód:

Sub String_Comparison_Example1 () Dim Hodnota1 Jako String Dim Hodnota2 Jako String Hodnota1 = "Bangalore" Value2 = "BANGALORE" Dim DimResult Jako String End Sub

U této proměnné otevřete funkci „StrComp“.

Kód:

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

U řetězců „String1“ a „String2“ jsme již hodnoty přiřadili prostřednictvím proměnných, zadejte tedy názvy proměnných.

Kód:

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

Poslední částí funkce je „Porovnat“ pro tuto volbu „vbTextCompare“.

Kód:

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

Nyní zobrazte proměnnou „Konečný výsledek“ ve schránce zpráv ve VBA.

Kód:

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

Dobře, spustíme kód a uvidíme výsledek.

Výstup:

Protože řetězce „Bangalore“ i „BANGALORE“ jsou stejné, dostali jsme výsledek jako 0, tj. Shodu. Obě hodnoty rozlišují velká a malá písmena, protože jsme argument zadali jako „vbTextCompare“ , ignoroval shodu citlivých na velká a malá písmena a shodoval se pouze s hodnotami, takže obě hodnoty jsou stejné a výsledek je 0, tj. PRAVDA.

Kód:

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

Příklad č. 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

Toto byl průvodce porovnáním řetězců VBA. Zde diskutujeme o tom, jak porovnat dvě hodnoty řetězce pomocí funkce StrComp v aplikaci Excel VBA spolu s příklady a stáhnout šablonu aplikace Excel. Můžete se také podívat na další články související s Excel VBA -

  • Průvodce funkcemi řetězce VBA
  • Rozdělit řetězec VBA do pole
  • Metody podřetězce VBA
  • Text VBA

Zajímavé články...