VBA StrComp | Porovnejte řetězce ve VBA pomocí funkce StrComp

Funkce Excel VBA StrComp

VBA StrComp je vestavěná funkce sloužící k porovnání, zda jsou obě hodnoty řetězce stejné nebo ne. Výsledky však nemají výchozí hodnotu PRAVDA nebo NEPRAVDA jako v listu, spíše se liší.

Než se podíváme na výsledky, dovolte mi nejprve vám ukázat syntaxi funkce StrComp.

  • Řetězec 1: Řetězec 1 je první řetězec nebo hodnota, kterou porovnáváme.
  • Řetězec 2: Řetězec 2 je druhý řetězec nebo hodnota, kterou porovnáváme s řetězcem 1 .
  • Porovnat: Můžeme zde dodat tři možnosti.
      • 0 = Binární porovnání. Tím se provádějí výpočty citlivé na velká a malá písmena. Například „Hello“ se nerovná „HELLO“, protože obě slova jsou různá. Toto je výchozí hodnota, pokud tento parametr ignorujete. vbBinaryCompare
      • 1 = Porovnání textu. Tato možnost provádí výpočty, které nerozlišují velká a malá písmena. Například „Hello“ se rovná události „HELLO“, ačkoli obě slova jsou různá. vbTextCompare
      • 2 = Porovnat přístup. Tím se provede porovnání databáze.

Výsledky funkce Porovnání řetězců (StrComp)

Jak jsem řekl, když porovnáváme dvě hodnoty v listu, dostaneme výsledek jako TRUE nebo FALSE. Ale s výsledky porovnávání řetězců VBA nejsou stejné.

  • Dostaneme nulu (0), když se řetězec 1 rovná řetězci 2.
  • Dostáváme jedna (1), když je Řetězec 1 hodnota je větší, než je řetězec 2 hodnota .
  • Mínus jedna (-1) dostaneme, když je hodnota String 1 menší než String 2
  • Získáváme NULL, když je hodnota String 1 nebo String 2 NULL.

Příklady použití funkce VBA StrComp

Tuto šablonu VBA StrComp Excel si můžete stáhnout zde - Šablona VBA StrComp Excel

Příklad č. 1

Začněme jednoduchým příkladem. Například porovnáme dvě hodnoty, tj. „Excel VBA“ a „Excel VBA“.

Kód:

 Sub StrComp_Example1 () Dim FirstValue jako String 'Uložení hodnoty řetězce 1 Dim DimValue jako String' Uložení hodnoty řetězce 2 Dim Výsledek jako String 'Uložení výsledku vzorce StrComp FirstValue = "Excel VBA"' Přiřazení hodnoty String 1 SecondValue = "Excel VBA" 'Přiřadit hodnotu String 2 Výsledek = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Použít funkci StrComp Výsledek MsgBox 'Zobrazit výsledek v okně zprávy End Sub 

Když spustím tento kód, dostaneme jako výsledek Zero (0) , protože obě hodnoty String 1 a String 2 jsou stejné.

Příklad č. 2

Nyní změním případy dvou slov.

Řetězec 1 = Excel Vba

Řetězec 2 = Excel VBA

Kód:

 Sub StrComp_Example2 () Dim FirstValue jako String 'k uložení hodnoty řetězce 1 Dim DimValue jako String' k uložení hodnoty řetězce 2 Dim výsledek jako String 'k uložení výsledku vzorce StrComp FirstValue = "Excel Vba"' Přiřazení hodnoty String 1 SecondValue = "Excel VBA" 'Přiřadit hodnotu String 2 Výsledek = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Použít funkci StrComp Výsledek MsgBox 'Zobrazit výsledek v okně zprávy End Sub 

Když spustím tento kód, dostaneme 1, protože protože jsme zadali argument Porovnat jako „ vbBinaryCompare“ , zkontroluje znaky citlivé na velká a malá písmena.

Nyní změním možnost Porovnat z „ vbBinaryCompare“ na „ vbTextCompare“

Kód:

 Sub StrComp_Example3 () Dim FirstValue jako String 'Uložení hodnoty řetězce 1 Dim DimValue jako String' Uložení hodnoty řetězce 2 Dim Výsledek jako String 'Uložení výsledku vzorce StrComp FirstValue = "Excel Vba"' Přiřazení hodnoty String 1 SecondValue = "Excel VBA" 'Přiřadit hodnotu String 2 Výsledek = StrComp (FirstValue, SecondValue, vbTextCompare)' Použít funkci StrComp Výsledek MsgBox 'Zobrazit výsledek v okně zprávy End Sub 

S tímto porovnáním získáme nulu (0), protože vbaTextCompare ignoruje malá a velká písmena.

Příklad č. 3

Případová studie VBA StrComp s podmínkou IF

Předpokládejme, že máte data jako na následujícím obrázku.

Musíme porovnat řetězec 1 s řetězcem 2 a dosáhnout výsledku jako „přesný“, pokud jsou oba stejné, jinak by měl být výsledek „ne přesný“.

Níže uvedený kód provede práci za nás.

Kód:

 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 = "Přesný" Else Cells (i, 3) .Value = "Není přesný" Konec, pokud další, i Konec Sub 

Když spustím výše uvedený kód VBA v aplikaci Excel, dostaneme níže uvedený výsledek.

Pokud se podíváte na buňku C4, řetězec 1 a řetězec 2 jsou stejné, ale znaky rozlišují velká a malá písmena, takže výsledek je „není přesný“. Abychom tento problém překonali, musíme zadat Porovnat jako vbTextCompare.

Níže je upravený kód pro získání výsledku jako „Přesný“ pro buňku C4.

Kód:

 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) If Result = 0 Then Cells (i , 3) .Value = "Přesný" Else Cells (i, 3) .Value = "Není přesný" Konec Pokud Další i Konec Sub 

Tento kód vrátí níže uvedený výsledek.