Excel VBA InStr függvény – példákkal magyarázva

Tegnap kaptam egy e-mailt egyik olvasómtól – június.

Szerette volna tudja, hogyan alkalmazzon félkövér betűtípust a karakterlánc egy adott részén egy cellán belül. Például alkalmazza a félkövér formátumot csak a „Hello” szóra a „Hello World” szóból.

És ezt egyszerre több száz cellára akarta megtenni.

Mivel van nincs beépített funkcionalitás az Excel-ben, amely képes lenne erre, létrehoztam egy egyszerű makrót, amely az Excel VBA InStr függvényt használja (ennek módját a bemutató 4. példájában láthatja).

De először nézzük meg hogyan működik az Excel VBA InStr függvény!

Ez az oktatóanyag kiterjed:

Excel VBA InStr függvény

Ebben az oktatóanyagban elmagyarázom az InStr függvény használatát az Excel VBA-ban, és néhány gyakorlati példát találok, ahol használható.

Excel VBA InStr függvény – Bevezetés

Az InStr függvény megtalálja egy megadott alstring pozíciója a karaktersorozaton belül, és visszaadja annak előfordulásának első pozícióját.

Például, ha meg akarja találni az ‘x’ pozícióját az ‘Excel’ alkalmazásban, az Excel VBA InStr függvény használatával visszatér.

Az InStr függvény szintaxisa

  • – (opcionális argumentum) ez egy egész érték, amely megmondja az InStr függvénynek azt a kezdő pozíciót, ahonnan kezdeni kell a keresést. Például, ha azt akarom, hogy a keresés elölről induljon, akkor az értéket 1-ként adom meg. Ha azt akarom, hogy a harmadik karakterrel kezdődjön, akkor a 3-at fogom használni. Ha kihagyja, akkor az 1 alapértelmezett értéke lesz.
  • String1 – Ez az a fő karakterlánc (vagy szülő karakterlánc), amelyben keresni szeretne. Például, ha az x pozícióját keresi az Excelben, akkor az 1. karakterlánc “Excel” lenne.
  • String2 – Ez az az alszöveg, amelyet keres. Például, ha az x pozícióját keresi az Excelben, a String2 x lesz.
  • – (opcionális argumentum) Az argumentumhoz a következő három értéket adhatja meg:
    • vbBinaryCompare – Ez egy karaktert csinálna Karakter-összehasonlítással. Például, ha az ‘Excel’ -ben az ‘x’ -et keresi, akkor az 2-et ad vissza, de ha az ‘X-et’ az ‘Excel’ -ben keresi, akkor 0-t ad vissza, mivel az X a felső eset. Használhat 0-t is a vbBinaryCompare helyett. Ha az argumentum el van hagyva, akkor ezt vesszük alapértelmezettnek.
    • vbTextCompare – Ez szöveges összehasonlítást eredményezne. Például, ha az ‘x’ szót keresi vagy az ‘X’ az Excel-ben, mindkét esetben 2-t adna vissza. Ez az argumentum figyelmen kívül hagyja a kis- és nagybetűket. Az 1-et is használhatja a vbTextCompare helyett.
    • vbDatabaseCompare – Ez csak a Microsoft Access számára használható. felhasználja az információkat az adatbázis az összehasonlítás elvégzéséhez. A 2-et is használhatja a vbDatabaseCompare helyett.

További megjegyzések az Excel VBA InStr függvényhez:

  • Az InStr egy VBA függvény és nem munkalapfüggvény. Ez azt jelenti, hogy nem használhatja a munkalapon belül.
  • Ha a String2 (amely az az alsztring, amelynek a pozícióját keresi) üres, akkor a függvény visszaadja az argumentum értékét.
  • Ha az InStr függvény nem találja az alsztringet a fő karaktersorozatban, akkor 0-t adna vissza.

Most nézzünk meg néhány példát az Excel VBA InStr függvény használatára

1. példa – A pozíció megkeresése az elejétől

Ebben a példában az InStr függvény segítségével kezdettől fogva megkeresem a „V” helyzetét az „Excel VBA” -ban.

Ennek kódja a következő lenne:

Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub

A kód futtatásakor egy 7-es értékű üzenetmező jelenik meg, amely a ‘V’ helyzete az ‘Excel VBA’ karakterláncban.

2. példa – A pozíció megkeresése a második szó elejéről

Tegyük fel, hogy meg akarom találni a pozíciót a „the” kifejezésből – „A gyors barna róka átugrik a lusta kutyán”

A keresést azonban szeretném kezdje a második szóval.

Ebben az esetben meg kell változtatnunk az argumentumot, hogy megbizonyosodjunk arról, hogy a második szó kezdőpontját meghatározza-e.

Itt van a kód, amely ezt fogja tenni:

Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Ez a kód a 32 értékű üzenetmezőt jeleníti meg, mivel a kezdő pozíciót 4-nek adtuk meg. Ezért figyelmen kívül hagyja az elsőt ‘ Az ‘és megtalálja a második’ a ‘-t a mondatban.

Ha dinamikusabbá akarja tenni, akkor kibővítheti a kódot úgy, hogy az automatikusan figyelmen kívül hagyja az első szót.

Itt van a továbbfejlesztett kód, amely ezt meg fogja tenni:

Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Ez a kód először megtalálja a szóköz karakterét és eltárolja azt a StartingPosition változóban.

Ezután ezt a változót használja kiinduló helyzetként az ‘the’ szó keresésére.

Ezért 32-et ad vissza (ami a ‘the’ kezdő pozíciója az első szó után).

3. példa – A @ helyének megkeresése az e-mail címben

Könnyedén létrehozhat egy egyedi függvényt, amellyel megkeresheti a @ helyét egy e-mail címben az Excel VBA InStr függvény használatával.

Itt található az egyedi függvény létrehozásának kódja:

Mostantól bármely más munkalapfunkcióként használhatja ezt az egyéni függvényt. Egy cellahivatkozást fog bevinni, és megadja a @ pozícióját benne.

Hasonlóképpen létrehozhat egy egyéni függvény az alsztringek pozíciójának megkereséséhez a fő karaktersorozaton belül.

4. példa – A karakterlánc egy részének kiemelése a cellákon belül

Ez az a lekérdezés, amelyet június kért (olvasóm aki engem is inspirált ennek az oktatóanyagnak a megírásához).

Íme egy minta adat, amelyet júniusban küldött nekem:

Az ő lekérdezése az volt, hogy a zárójelen kívüli számokat félkövérré tegye.

Itt van az általam létrehozott kód, amely ezt megteszi:

A fenti kód a For Every ciklust használja menjen végig a kiválasztás minden egyes celláján. Az InStr függvény segítségével azonosítja a nyitó zárójeles karakter pozícióját. Ezután megváltoztatja a zárójel előtti szöveg betűtípusát.

A kód használatához át kell másolnia és be kell illesztenie egy modult a VB szerkesztőbe.

Miután beillesztette a másolatot a kódot, válassza ki azokat a cellákat, amelyekben meg szeretné csinálni ezt a formázást, és futtassa a makrót (az alábbiak szerint).

A következő Excel VBA oktatóanyagok is tetszhetnek:

  • Excel VBA SPLIT függvény.
  • VBA TRIM funkció.
  • Az Excel VBA hurkok végső útmutatója .
  • Kezdő útmutató a következő hurok használatához az Excel VBA-ban.
  • Excel-bővítmények létrehozása és használata.
  • Több munkafüzet kombinálása egyetlen Excel munkafüzetbe.
  • Hogyan számoljuk meg a színes cellákat az Excel-ben?
  • Hasznos Excel VBA makro példák kezdőknek.
  • Hogyan válogathatunk adatokat Excel-ben a VBA segítségével (Lépésről-lépésre útmutató)

Leave a Reply

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük