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 funkcí porovnání řetězců VBA nejsou výsledky 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
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 '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 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 Výsledek 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.
