Hogyan találja meg a részláncot a VBA használatával (9 mód)

  • Ossza Meg Ezt
Hugh West

Ha a VBA segítségével a részláncok keresésének néhány legegyszerűbb módját keresi, akkor a megfelelő helyen jár. Miután végigment ezen a cikken, képes lesz megtalálni egy részlánc pozícióját, vagy kivenni az adatokat a részlánc segítségével, vagy könnyen megváltoztatni a részlánc formátumát. Lássuk a cikket.

Munkafüzet letöltése

Minta tartalom

9 mód a VBA használatával a részlánc keresésére

Itt van a következő adattáblázat, amellyel megmutatom a VBA segítségével egy karakterláncban lévő részlánc megtalálásának módjait. Megpróbálom megmutatni a véletlenszerű karakterláncban lévő részlánc megtalálásának módjait is.

Ezt a feladatot a Microsoft Excel 365 verzió, bármely más verziót is használhatsz a kényelemnek megfelelően.

Módszer-1: Részlánc keresése egy karakterláncban a VBA használatával

Ha a VBA segítségével szeretné megtalálni a kívánt részláncot egy karakterláncban, használhatja a következő parancsot az InStr függvény a VBA-kódban.

Step-01 :

➤Go to Fejlesztő Tab>> Visual Basic Opció

Ezután a Visual Basic szerkesztő megnyílik.

➤Go to Beillesztés Tab>> Modul Opció

Ezután egy Modul létrejön.

Step-02 :

➤ Írja a következő kódot

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Azt hiszem, ezért vagyok", "hiszem") MsgBox Pos End Sub 

Tessék, InStr(1, "Azt hiszem, tehát vagyok", "think") egy karakterlánc részláncának pozícióját adja vissza. 1 a kezdő pozíció, " Gondolkodom, tehát vagyok" az a karakterlánc, amelyben a kívánt részláncot találja, és "gondolkodj" alapértelmezés szerint nagy- és kisbetű-érzékeny, ezért ügyeljen a keresni kívánt részlánc nagy- és kisbetűjére.

➤Press F5

Eredmény :

Ezután a következőket kapja Üzenetdoboz amely tartalmazza a "gondolkodj" részlánc.

Módszer-2: Nagy- és kisbetű-érzékeny részlánc keresése egy karakterláncban

Ha a VBA segítségével szeretné megtalálni a kívánt részláncot egy karakterláncban az esetektől függetlenül, akkor kövesse ezt a módszert.

Step-01 :

➤Follow Step-01 a Módszer-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub 

Tessék, vbTextCompare a nagy- és kisbetű-független részláncok keresésére szolgál.

➤Press F5

Eredmény :

Ezután a következőket kapja Üzenetdoboz amely tartalmazza a "gondolkodj" részlánc.

Ugyanezt a következő kóddal teheti meg.

 Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub 

Tessék, Opció Összehasonlítás szövege megtalálja a nagy- és kisbetű-érzékeny részláncot.

➤Press F5

Eredmény :

Ezután a következőket kapja meg Üzenetdoboz amely tartalmazza a "gondolkodj" részlánc.

Módszer-3: Az InstrRev függvény használata a VBA-ban

Itt megmutatom, hogyan találhatunk egy részláncot egy karakterlánc végétől.

Step-01 :

➤Follow Step-01 a Módszer-1

 Sub FindFromEnd() MsgBox InStrRev("Azt hiszem, ezért vagyok", "I") End Sub 

InStrRev a bal oldal helyett a jobb oldalról fogja megtalálni a részláncot.

➤Press F5

Eredmény :

Ezután a következőket kapja Üzenetdoboz amely tartalmazza a második "I" részláncot a jobb oldalról.

4. módszer: Részlánc pozíciójának keresése egy adattartományban lévő karakterláncban

Ha a speciális karaktert "@" a Email azonosító , akkor kövesse ezt a módszert. Én itt hozzáadtam a Pozíció oszlop erre a célra.

Step-01 :

➤Follow Step-01 a Módszer-1

 Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function 

Létrehoz egy függvényt, melynek neve FindSubstring (bármilyen más nevet is használhat)

érték az a cellahivatkozás, amely a karakterláncot tartalmazza, és a következő módon van deklarálva Tartomány .

Step-02 :

➤A kimenet kiválasztása E5 cella

➤Típus a következő függvényt (amelyet a VBA )

=FindSubstring(D5)

D5 az a cella, amely a karakterláncot tartalmazza.

➤Press BELÉPÉS

➤Húzza le a Töltse ki a fogantyút Szerszám

Eredmény :

Ezután megkapja a speciális karakterek pozícióit. " @" a Email azonosító .

Hasonló olvasmányok:

  • Hogyan keressünk karakterláncot egy cellában a VBA használatával az Excelben (2 módszer)
  • FindNext a VBA használatával az Excelben (2 példa)
  • Hogyan keressünk karakterláncot a VBA-val az Excelben (8 példa)
  • VBA Utolsó sor keresése Excelben (5 mód)

Módszer-5: Egy adott részlánc ellenőrzése egy adattartományban lévő karakterláncban

Tegyük fel, hogy a következőt akarja írni Pass vagy A levelezés elmulasztása a tanulók nevéhez, attól függően, hogy a Eredmény oszlop ahol Pass vagy Fail zárójelbe van írva. Ahhoz, hogy ezt a részláncot megtaláljuk a Eredmény oszlop és írja le a Megfelel vagy nem felel oszlop kövesse ezt a módszert.

Step-01 :

➤Follow Step-01 a Módszer-1

 Sub CheckSubstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.value, "Pass")> 0 Then cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub 

Itt a cellatartomány a következő C5:C10 amely a Eredmény oszlop

InStr(cell.value, "Pass")> 0 az a feltétel, amikor a szám nagyobb, mint nulla (amikor a cella tartalmaz "Pass" ), akkor a következő sor folytatódik, és a kimenetet a szomszédos cellában a következőképpen adja meg Átment .

Ha a feltétel hamis lesz, akkor a cella nem tartalmaz semmilyen "Pass" akkor a vonal alatt Else végrehajtódik, és a kimeneti értéket a szomszédos cellában adja meg, mint Sikertelen .

Ez a ciklus minden egyes cellánál folytatódik.

➤Press F5

Eredmény :

Ezután a következő kimeneteket kapja a Megfelel vagy nem felel meg oszlop.

Módszer-6: Egy adott részlánc ellenőrzése egy karakterláncban és az adatok kinyerése

Megmutatom az utat, hogy megtaláljuk a diákokat. Michael a Diák neve oszlop és a megfelelő adatok kinyerése a VBA ebben a módszerben.

Step-01 :

➤Follow Step-01 a Módszer-1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).value End If Next i End Sub 

Itt használtam B100 mint a Aktív laptartomány de bármilyen tartományt használhat a felhasználásnak megfelelően.

InStr(1, Range("B" & i), "Michael")> 0 a feltétel annak ellenőrzésére, hogy az oszlopban lévő cella B a címen található. Michael

Range("E" & icount & ":G" & icount) az a tartomány, ahová a kimeneti adatokat szeretnénk, és Range("B" & i & ":D" & i).value az oszlopok értékeit adja meg B a címre. D .

➤Press F5

Eredmény :

Ezután a következő adatokat kapja meg a következő névvel rendelkező tanulókról Michael .

Módszer-7: Szó részlánc keresése a szóhoz

Ha a részláncot szóként szeretné megtalálni, akkor kövesse ezt a módszert.

Step-01 :

➤Follow Step-01 a Módszer-1

 Sub Stringforword() Dim j As Integer j = InStr("Ez vagyok én", "is") If j = 0 Then MsgBox "Word not found" Else MsgBox "Word found in position: " & j End If End If End Sub 

Ellenőrzi, hogy a karakterlánc tartalmaz-e a majd a helyzetét a következő módon adjuk meg

➤Press F5

Eredmény :

Ezután a következő üzenőmező jelenik meg, amely a következő információkat mutatja szó található a pozícióban:6 (a a ).

Ezt a kódot kipróbálhatja egy olyan szóra, amely nem szerepel a karakterláncban.

➤Típus a következő kód

 Sub Stringforword() Dim j As Integer j = InStr("Itt van, ami én vagyok", "vagyok") If j = 0 Then MsgBox "Word not found" Else MsgBox "Word found in position: " & j End If End If End Sub 

➤Press F5

Eredmény :

Ezután a következő üzenőmező jelenik meg, amely a következő információkat mutatja szó nem található .

8. módszer: Instr és LEFT függvény használata

Itt elmagyarázom, hogyan találjuk meg egy részlánc pozícióját egy karakterláncban, és a részlánc előtti szövegeket a következő módon tudjuk kinyerni VBA és a LEFT funkció .

Step-01 :

➤Follow Step-01 a Módszer-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Ez vagyok én" j = InStr(txt, "is") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "is") a részlánc pozíciója a és Balra(txt, j - 1) kivonja a részláncokat a a .

➤Press F5

Eredmény :

Ezután a következő üzenetváltozat jelenik meg, amely a következőt mutatja Itt (részlánc előtt a ).

Módszer-9: Egy adott részlánc félkövérrel való kiemelése egy karakterláncban

A zárójelek előtti osztályzatokat félkövérrel írhatja be a Eredmény oszlop ezt a módszert követve.

Step-01 :

➤Follow Step-01 a Módszer-1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, Cell, "(") az első zárójel pozícióját adja vissza, és a Cell.Characters(1, txt - 1).Font.Bold az első zárójel előtti részláncot teszi a Bold .

Step-02 :

➤Válassza ki a Eredmény oszlop

➤Go to Fejlesztő Tab>> Makrók Opció

Ezután egy Makró varázsló fog megjelenni.

➤Select Boldingsubstring (a VBA kódnév), majd Fuss .

Eredmény :

Ezt követően a jegyek a Eredmény Oszlop félkövérrel lesz kiemelve.

Gyakorlati szekció

A saját magad általi gyakorláshoz biztosítottunk egy Gyakorlat szakasz az alábbi módon egy lapon, amelynek neve Gyakorlat Kérem, tegye meg egyedül.

Következtetés

Ebben a cikkben megpróbáltam lefedni a legegyszerűbb módjait a részlánc keresésének a VBA Remélem, hasznosnak találja majd. Ha bármilyen javaslata vagy kérdése van, nyugodtan ossza meg velünk.

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.