VBA StrComp - Primerjajte nize v VBA z uporabo funkcije StrComp

Funkcija Excel VBA StrComp

VBA StrComp je vgrajena funkcija, ki se uporablja za primerjavo, ali sta vrednosti niza enaki ali ne. Vendar rezultati niso privzeti TRUE ali FALSE kot na delovnem listu, ampak je drugače.

Preden si ogledamo rezultate, naj vam najprej pokažem sintakso funkcije StrComp.

  • Niz 1: Niz 1 je prvi niz ali vrednost, ki jo primerjamo.
  • Niz 2: Niz 2 je drugi niz ali vrednost, ki jo primerjamo z nizom 1 .
  • Primerjaj: Tu lahko ponudimo tri možnosti.
      • 0 = binarna primerjava. To izvede izračune, ki razlikujejo med velikimi in malimi črkami. Na primer, »Hello« ni enak »HELLO«, ker sta obe besedi različni. To je privzeta vrednost, če prezrete ta parameter. vbBinaryCompare
      • 1 = Primerjava besedila. Ta možnost izvaja izračune, ki niso občutljivi na velike in male črke. Na primer, »Hello« je enak dogodku »HELLO«, čeprav sta obe besedi različni. vbTextCompare
      • 2 = Dostop do primerjave. To izvede primerjavo baze podatkov.

Rezultati funkcije primerjave nizov (StrComp)

Kot sem rekel, ko primerjamo dve vrednosti na delovnem listu, dobimo rezultat kot TRUE ali FALSE. Toda s funkcijo primerjave nizov VBA rezultati niso enaki.

  • Dobimo nič (0), če je niz 1 enak nizu 2.
  • Smo dobili eno (1), ko je String 1 je vrednost večja od godalnega 2 vrednosti .
  • Ko je vrednost String 1 manjša od String 2, dobimo minus eno (-1)
  • Dobimo NULL, če je vrednost String 1 ali String 2 NULL.

Primeri uporabe funkcije VBA StrComp

Primer # 1

Začnimo s preprostim primerom. Na primer, primerjali bomo dve vrednosti, tj. "Excel VBA" in "Excel VBA."

Koda:

Sub StrComp_Example1 () Dim FirstValue As String 'Shrani vrednost niza 1 Dim Dim SecondValue As String' Shrani niz 2 value Dim Result As String 'Shrani rezultat formule StrComp FirstValue = "Excel VBA"' Dodeli vrednosti String 1 vrednost SecondValue = "Excel VBA" 'Dodelitev vrednosti String 2 Rezultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Uporabi funkcijo StrComp Rezultat MsgBox 'Prikaži rezultat v polju s sporočilom End Sub

Ko zaženem to kodo, bomo kot rezultat dobili Zero (0) , ker sta vrednosti String 1 in String 2 enaki.

2. primer

Zdaj bom spremenil velikosti dveh besed.

Niz 1 = Excel Vba

Niz 2 = Excel VBA

Koda:

Sub StrComp_Example2 () Dim FirstValue As String 'Za shranjevanje vrednosti niza 1 Dim SecondValue As String' Shranjevanje niza 2 vrednosti Dim Result As String 'Shranjevanje rezultata formule StrComp FirstValue = "Excel Vba"' Dodeli vrednosti String 1 vrednost SecondValue = "Excel VBA" 'Dodelitev vrednosti String 2 Rezultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Uporabi funkcijo StrComp Rezultat MsgBox 'Prikaži rezultat v polju s sporočilom End Sub

Ko zaženem to kodo, bomo dobili 1, ker ker smo argument za primerjavo podali kot » vbBinaryCompare«, bo preveril znake, ki razlikujejo med velikimi in malimi črkami.

Zdaj bom možnost Primerjaj spremenil iz " vbBinaryCompare" v " vbTextCompare"

Koda:

Sub StrComp_Example3 () Dim FirstValue As String 'Shrani vrednost niza 1 Dim Dim SecondValue As String' Shrani niz 2 vrednost Dim Result As String 'Shrani rezultat formule StrComp FirstValue = "Excel Vba"' Dodeli vrednosti String 1 vrednost SecondValue = "Excel VBA" 'Dodelitev vrednosti String 2 Rezultat = StrComp (FirstValue, SecondValue, vbTextCompare)' Uporabi funkcijo StrComp Rezultat MsgBox 'Prikaži rezultat v polju za sporočilo End Sub

S to primerjavo bomo dobili nič (0), ker vbaTextCompare ignorira velike in male črke.

3. primer

Študija primera VBA StrComp s pogojem IF

Predpostavimo, da imate podatke, kot je spodnja slika.

String 1 moramo primerjati z nizom 2 in pri rezultatu najdemo »Natančno«, če sta oba enaka, sicer bi moral biti rezultat »Ni natančno«.

Spodnja koda bo opravila delo namesto nas.

Koda:

Sub StrComp_Example4 () Dim Rezultat kot niz Dim Dim Kot celo število za i = 2 do 6 Rezultat = StrComp (Celice (i, 1) .Value, Celice (i, 2) .Value) Če je rezultat = 0, potem Celice (i, 3 ) .Value = "Natančno" Druge celice (i, 3) .Value = "Ni natančno" Konec, če je naslednji i Končaj Sub

Ko v Excelu zaženem zgornjo kodo VBA, bomo dobili spodnji rezultat.

Če pogledate celico C4, sta niz 1 in niz 2 enaka, vendar sta znaka občutljiva na velike in male črke, zato je rezultat »Ni natančno«. Da bi odpravili to težavo, moramo Primerjati kot vbTextCompare.

Spodaj je spremenjena koda, da dobimo rezultat kot "Natančno" za celico C4.

Koda:

Sub StrComp_Example4 () Dim rezultat kot niz Dim Dim kot celo število za i = 2 do 6 Rezultat = StrComp (Celice (i, 1) .Value, Celice (i, 2) .Value, vbTextCompare) Če je rezultat = 0 Potem celice (i , 3) .Value = "Natančno" Druge celice (i, 3) .Value = "Ni natančno" Konec, če je naslednji i Končaj Sub

Ta koda bo vrnila spodnji rezultat.

Zanimive Članki...