VBA StrComp - Hasonlítsa össze a karakterláncokat a VBA-ban az StrComp függvény segítségével

Excel VBA StrComp függvény

A VBA StrComp egy beépített függvény, amelyet arra használnak, hogy összehasonlítsák, hogy a két karakterlánc értéke megegyezik-e vagy sem. Az eredmények azonban nem alapértelmezettek: IGAZ vagy HAMIS, mint a munkalapon, inkább más.

Mielőtt megnéznénk az eredményeket, hadd mutassam meg először az StrComp függvény szintaxisát.

  • 1. karakterlánc: Az 1. karakterlánc az első karakterlánc vagy érték, amelyet összehasonlítunk.
  • 2. karakterlánc: A 2. karakterlánc a második karakterlánc vagy érték, amelyet összehasonlítunk az 1. karakterlánccal .
  • Összehasonlítás: Itt három lehetőséget kínálunk.
      • 0 = bináris összehasonlítás. Ez nagybetű érzékeny számításokat végez. Például a „Hello” nem egyenlő a „HELLO” -val, mert mindkét eset különbözik. Ez az alapértelmezett érték, ha figyelmen kívül hagyja ezt a paramétert. vbBinaryCompare
      • 1 = Szöveg összehasonlítása. Ez az opció elvégzi a nem kis- és nagybetű érzékeny számításokat. Például a „Hello” megegyezik a „HELLO” eseménnyel, bár mindkét eset különbözik. vbTextCompare
      • 2 = Hozzáférés összehasonlítása. Ez elvégzi az adatbázis-összehasonlítást.

A karakterlánc-összehasonlító (StrComp) függvény eredményei

Ahogy elmondtam, amikor két értéket hasonlítottunk össze a munkalapon, az eredményt IGAZként vagy HAMISként kapjuk meg. De a VBA karakterlánc-összehasonlító funkcióval az eredmények nem ugyanazok.

  • Akkor kapunk nullát (0), ha az 1. karakterlánc egyenlő a 2. karakterlánccal.
  • Akkor kapunk egyet (1), ha az 1. karakterlánc értéke nagyobb, mint a 2. karakterlánc értéke .
  • Mínusz egy (-1) értéket kapunk, ha az 1. karakterlánc értéke kisebb, mint a 2. karakterlánc
  • Akkor kapunk NULL értéket, ha az 1. vagy 2. karakterlánc értéke NULL.

Példák a VBA StrComp függvény használatára

1. példa

Kezdjük egy egyszerű példával. Például összehasonlítunk két értéket, pl. „Excel VBA” és „Excel VBA”.

Kód:

Al StrComp_Example1 () Dim FirstValue mint karakterlánc "Az 1. karakterlánc értékének tárolása Dim SecondValue mint karakterlánc" A 2. karakterlánc értékének tárolása Dim Result as string "Az StrComp képlet eredményének tárolása FirstValue =" Excel VBA "" Az 1. karakterlánc hozzáadása SecondValue = "Excel VBA" 'A 2. karakterlánc értékének hozzárendelése Eredmény = StrComp (FirstValue, SecondValue, vbBinaryCompare)' StrComp függvény alkalmazása MsgBox Result 'Az eredmény megjelenítése az üzenet mezőben End Sub

Amikor futtatom ezt a kódot, akkor a Zero (0) értéket kapjuk eredményül, mert az 1. és 2. karakterlánc értéke egyaránt megegyezik.

2. példa

Most két szó eseteit változtatom.

1. karakterlánc = Excel Vba

2. karakterlánc = Excel VBA

Kód:

Al StrComp_Example2 () Dim FirstValue mint karakterlánc "Az 1. karakterlánc értékének tárolása Dim SecondValue mint karakterlánc" A 2. karakterlánc értékének tárolása Dim Result as string "Az StrComp képlet eredményének tárolása FirstValue =" Excel Vba "" Az 1. karakterlánc hozzárendelése SecondValue = "Excel VBA" 'Rendelje hozzá a 2. karakterlánc értékét Eredmény = StrComp (FirstValue, SecondValue, vbBinaryCompare)' StrComp függvény alkalmazása MsgBox Result 'Az eredmény megjelenítése az üzenet mezőben End Sub

Amikor futtatom ezt a kódot, kapunk 1-et, mert mivel az Összehasonlítás argumentumot „ vbBinaryCompare ” néven adtuk meg, ellenőrizni fogja a kis- és nagybetűk közötti karaktereket.

Most megváltoztatom az Összehasonlítás opciót „ vbBinaryCompare” -ról „ vbTextCompare” -re

Kód:

Al StrComp_Example3 () Dim FirstValue mint karakterlánc "Az 1. karakterlánc értékének tárolása Dim SecondValue mint karakterlánc" A 2. karakterlánc értékének tárolása Dim Result as string "Az StrComp képlet eredményének tárolása FirstValue =" Excel Vba "" Az 1. karakterlánc hozzáadása SecondValue = "Excel VBA" 'Rendelje hozzá a 2. karakterlánc értékét Eredmény = StrComp (FirstValue, SecondValue, vbTextCompare)' StrComp függvény alkalmazása MsgBox Result 'Az eredmény megjelenítése az üzenet mezőben End Sub

Ezzel az összehasonlítással nulla (0) értéket kapunk, mert a vbaTextCompare figyelmen kívül hagyja a kis- és nagybetűket.

3. példa

A VBA StrComp esettanulmánya IF feltételekkel

Tegyük fel, hogy rendelkezik az alábbi képhez hasonló adatokkal.

Meg kell összehasonlítani karakterlánc 1 a karakterlánc 2 és megérkezik a Eredmény a „Pontos”, ha mindkettő azonos, különben az eredmény legyen „Nem pontos.”

Az alábbi kód elvégzi a munkát helyettünk.

Kód:

Al StrComp_Example4 () Dim eredmény mint karakterlánc Dim I egész számként i = 2 és 6 között. Eredmény = StrComp (cellák (i, 1). Érték, cellák (i, 2). Érték) ) .Value = "Pontos" egyéb cellák (i, 3) .Value = "Nem pontos" vége, ha következő következő vége

Amikor a fenti VBA kódot futtatom az Excel programban, megkapjuk az alábbi eredményt.

Ha megnézzük a C4 cellát, akkor az 1. és a 2. karakterlánc megegyezik, de a karakterek megkülönböztetik a kis- és nagybetűket, így az eredmény „Nem pontos”. A probléma leküzdéséhez meg kell adnunk az Összehasonlítás vbTextCompare néven.

Az alábbiakban a módosított kódot kapjuk, hogy az eredmény „Pontos” legyen a C4 cellában.

Kód:

Al StrComp_Example4 () Dim eredmény mint karakterlánc Dim I egész számként i = 2-6 eredményre = StrComp (cellák (i, 1) .érték, cellák (i, 2) .érték, vbTextCompare) Ha eredmény = 0, akkor cellák (i , 3) .Value = "Pontos" egyéb cellák (i, 3) .Value = "Nem pontos" vége, ha következő következő vége

Ez a kód az alábbi eredményt adja vissza.

érdekes cikkek...