VBA „StrComp“ Palyginkite VBA eilutes naudodami „StrComp“ funkciją

„Excel VBA StrComp“ funkcija

„VBA StrComp“ yra įmontuota funkcija, naudojama norint palyginti, ar abi eilutės reikšmės yra vienodos, ar ne. Tačiau rezultatai nėra numatyti kaip TIKRA ar NETIESA, kaip ir darbalapyje, o jie skiriasi.

Prieš peržiūrėdami rezultatus, leiskite man pirmiausia parodyti „StrComp“ funkcijos sintaksę.

  • 1 eilutė: 1 eilutė yra pirmoji eilutė arba vertė, kurią lyginame.
  • 2 eilutė: 2 eilutė yra antra eilutė arba vertė, kurią lyginame su 1 eilute .
  • Palyginkite: Čia galime pateikti tris variantus.
      • 0 = Dvejetainis palyginimas. Taip atliekami didžiųjų ir mažųjų raidžių skaičiavimai. Pavyzdžiui, „Labas“ nėra lygus „LABAI“, nes abu žodžių atvejai skiriasi. Tai yra numatytoji vertė, jei ignoruojate šį parametrą. vbBinaryCompare
      • 1 = teksto palyginimas. Ši parinktis atlieka neskelbtinus skaičiavimus. Pvz., „Labas“ yra lygus „Sveiki“ įvykiui, nors abu žodžių atvejai skiriasi. vbTextCare
      • 2 = Prieiga prie palyginimo. Tai atlieka duomenų bazių palyginimą.

Styginių palyginimo (StrComp) funkcijos rezultatai

Kaip sakiau, kai darbalapyje lyginame dvi reikšmes, rezultatas gaunamas kaip TIKRA arba NETIESA. Tačiau naudojant VBA eilučių palyginimo funkciją rezultatai nėra vienodi.

  • Gauname nulį (0), kai 1 eilutė lygi 2 eilutei.
  • Gauname vieną (1), kai 1 eilutės vertė yra didesnė už 2 eilutės reikšmę .
  • Gauname minusą vieną (-1), kai 1 eilutės vertė yra mažesnė nei 2 eilutė
  • Mes gauname NULL, kai 1 eilutės arba 2 eilutės vertė yra NULL.

VBA StrComp funkcijos naudojimo pavyzdžiai

1 pavyzdys

Pradėkime nuo paprasto pavyzdžio. Pavyzdžiui, palyginsime dvi reikšmes, ty „Excel VBA“ ir „Excel VBA“.

Kodas:

Sub StrComp_Example1 () „Dim FirstValue“ kaip eilutė „Norėdami išsaugoti 1 eilutės vertę„ Dim SecondValue “kaip eilutė“ Norėdami išsaugoti 2 eilutės vertę „Dim Result As“ eilutė “„ StrComp “formulės rezultatą išsaugoti FirstValue =" Excel VBA "" Priskirkite 1 eilutės reikšmę SecondValue = „Excel VBA“ 'Priskirkite 2 eilutės reikšmę Rezultatas = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Taikyti StrComp funkciją MsgBox Rezultatas 'Rodyti rezultatą pranešimo laukelyje Pabaiga Sub

Kai paleisiu šį kodą, gausime nulį (0) , nes ir 1, ir 2 eilutės reikšmės yra vienodos.

2 pavyzdys

Dabar pakeisiu dviejų žodžių atvejus.

1 eilutė = „ Excel Vba“

2 eilutė = „ Excel“ VBA

Kodas:

„Sub StrComp_Example2“ („Dim FirstValue“ kaip eilutė „Norėdami išsaugoti 1 eilutės vertę„ Dim SecondValue “kaip eilutė“ Norėdami išsaugoti 2 eilutės vertę „Dim Result As“ eilutė “„ StrComp “formulės rezultatą išsaugoti FirstValue =" Excel Vba "" Priskirkite 1 eilutės reikšmę SecondValue = „Excel VBA“ 'Priskirkite 2 eilutės reikšmę Rezultatas = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Taikyti StrComp funkciją MsgBox Rezultatas 'Rodyti rezultatą pranešimo laukelyje End Sub

Kai paleisiu šį kodą, gausime 1, nes kadangi argumentą „Palyginti“ pateikėme kaip „ vbBinaryCompare“, jis patikrins, ar nėra didžiųjų ir mažųjų raidžių.

Dabar pakeisiu parinktį Palyginti iš „ vbBinaryCompare“ į „ vbTextCompare“

Kodas:

Sub StrComp_Example3 () „Dim FirstValue“ kaip eilutė „Norėdami išsaugoti 1 eilutės vertę„ Dim SecondValue “kaip eilutė“ Norėdami išsaugoti 2 eilutės vertę „Dim Result As“ eilutė “„ StrComp “formulės rezultatą išsaugoti FirstValue =" Excel Vba "" Priskirkite 1 eilutės reikšmę SecondValue = „Excel VBA“ 'Priskirkite 2 eilutės reikšmę Rezultatas = StrComp („FirstValue“, „SecondValue“, „vbTextCompare“) „Taikyti„ StrComp “funkciją„ MsgBox “rezultatas“ Rodyti rezultatą pranešimo laukelyje „End Sub“

Naudodami šį palyginimą gausime nulį (0), nes „ vbaTextCompare“ nepaiso didžiųjų ir mažųjų raidžių žodžių.

3 pavyzdys

VBA StrComp pavyzdys su IF sąlyga

Tarkime, kad turite tokių duomenų, kaip žemiau pateiktame paveikslėlyje.

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.

Žemiau yra modifikuotas kodas, kad gautumėte C4 langelio rezultatą kaip „Tikslus“.

Kodas:

Sub StrComp_Example4 () Dim Dim Rezultatas kaip eilutė Dim I kaip sveikasis skaičius i = 2–6 Rezultatas = StrComp (Cells (i, 1). Vertė, Cells (i, 2) .Value, vbTextCompare) Jei rezultatas = 0, tada Cells (i , 3) .Value = "Tikslios" kitos ląstelės (i, 3) .Vertas = "Nėra tiksli" pabaiga, jei kita i pabaiga

Šis kodas pateiks žemiau pateiktą rezultatą.

Įdomios straipsniai...