VBA StrComp - Porovnajte reťazce vo VBA pomocou funkcie StrComp

Funkcia Excel VBA StrComp

VBA StrComp je zabudovaná funkcia používaná na porovnanie toho, či sú dve hodnoty reťazca rovnaké alebo nie. Výsledky však nie sú predvolene TRUE alebo FALSE ako v pracovnom hárku, skôr sú odlišné.

Predtým, ako sa pozrieme na výsledky, dovoľte mi, aby som vám najskôr ukázal syntax funkcie StrComp.

  • Reťazec 1: Reťazec 1 je prvý reťazec alebo hodnota, ktorú porovnávame.
  • Reťazec 2: Reťazec 2 je druhý reťazec alebo hodnota, ktorú porovnávame s reťazcom 1 .
  • Porovnať: Môžeme tu dodať tri možnosti.
      • 0 = Binárne porovnanie. Vykonáva sa výpočet malých a veľkých písmen. Napríklad „Hello“ sa nerovná „HELLO“, pretože obe slová sú odlišné. Toto je predvolená hodnota, ak ignorujete tento parameter. vbBinaryCompare
      • 1 = Porovnanie textu. Táto možnosť vykonáva výpočty, ktoré nerozlišujú veľké a malé písmená. Napríklad „Hello“ sa rovná udalosti „HELLO“, aj keď obe slová sú odlišné. vbTextCompare
      • 2 = Porovnať prístup. Týmto sa vykoná porovnanie databázy.

Výsledky funkcie porovnania reťazcov (StrComp)

Ako som povedal, keď porovnávame dve hodnoty v hárku, dostaneme výsledok buď ako TRUE, alebo FALSE. Ale s funkciou porovnania reťazcov VBA nie sú výsledky rovnaké.

  • Získame nulu (0), keď sa String 1 rovná Stringu 2.
  • Dostávame jedna (1), keď je Reťazec 1 hodnota je väčšia, než je reťazec 2 hodnota .
  • Mínus jedna (-1) dostaneme, keď je hodnota reťazca 1 menšia ako reťazec 2
  • Získame NULL, keď hodnota String 1 alebo String 2 má hodnotu NULL.

Príklady použitia funkcie VBA StrComp

Príklad č

Začnime jednoduchým príkladom. Napríklad porovnáme dve hodnoty, tj „Excel VBA“ a „Excel VBA“.

Kód:

Sub StrComp_Example1 () Dim FirstValue ako reťazec 'Na uloženie hodnoty reťazca 1 Dim SecondValue ako String' na uloženie hodnoty reťazca 2 Dim Výsledok ako String 'na uloženie výsledku vzorca StrComp FirstValue = "Excel VBA"' Priradenie hodnoty reťazca 1 SecondValue = "Excel VBA" 'Priradiť hodnotu String 2 Výsledok = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Použiť funkciu StrComp Výsledok MsgBox 'Zobraziť výsledok v okne správy End Sub

Keď spustím tento kód, dostaneme ako výsledok Zero (0) , pretože obe hodnoty String 1 a String 2 sú rovnaké.

Príklad č

Teraz zmením prípady dvoch slov.

Reťazec 1 = Excel Vba

Reťazec 2 = Excel VBA

Kód:

Sub StrComp_Example2 () Dim FirstValue ako String 'na uloženie hodnoty reťazca 1 Dim SecondValue ako String' na uloženie hodnoty reťazca 2 Dim Result As String 'na uloženie výsledku vzorca StrComp FirstValue = "Excel Vba"' Priradenie hodnoty String 1 k SecondValue = "Excel VBA" 'Priradiť hodnotu String 2 Výsledok = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Použiť funkciu StrComp Výsledok MsgBox 'Zobraziť výsledok v okne správy End Sub

Keď spustím tento kód, dostaneme 1, pretože pretože sme zadali argument Porovnať ako „ vbBinaryCompare“, skontroluje sa, či sa v ňom rozlišujú malé a veľké písmená.

Teraz zmením možnosť Porovnať z „ vbBinaryCompare“ na „ vbTextCompare“

Kód:

Sub StrComp_Example3 () Dim FirstValue ako String 'na uloženie hodnoty reťazca 1 Dim SecondValue ako String' na uloženie hodnoty reťazca 2 Dim Result As String 'na uloženie výsledku vzorca StrComp FirstValue = "Excel Vba"' Priradenie hodnoty String 1 k SecondValue = "Excel VBA" 'Priradiť hodnotu String 2 Výsledok = StrComp (FirstValue, SecondValue, vbTextCompare)' Použiť funkciu StrComp Výsledok MsgBox 'Zobraziť výsledok v okne správy End Sub

Pri tomto porovnaní dostaneme nulu (0), pretože vbaTextCompare ignoruje slová, v ktorých sa rozlišujú malé a veľké písmená.

Príklad č

Prípadová štúdia VBA StrComp s podmienkou IF

Predpokladajme, že máte údaje ako na nasledujúcom obrázku.

We need to compare String 1 with String 2 and arrive at the Result as “Exact” if both are the same, else the result should be “Not Exact.”

The below code will do the job for us.

Code:

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) If Result = 0 Then Cells(i, 3).Value = "Exact" Else Cells(i, 3).Value = "Not Exact" End If Next i End Sub

When I run the above VBA code in Excel, we will get the below result.

If you look at C4 cell String 1 and String 2 are the same, but the characters are case sensitive, so the result is “Not Exact.” To overcome this issue, we need to supply the Compare as vbTextCompare.

Nižšie je uvedený upravený kód na získanie výsledku pre bunku C4 ako „presný“.

Kód:

Sub StrComp_Example4 () Dim Výsledok 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 = "Presná" Else Cells (i, 3) .Value = "Nepresná" Koniec Ak Ďalej i Koniec Sub

Tento kód vráti výsledok uvedený nižšie.

Zaujímavé články...