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ó)