Tartalomjegyzék
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 tartalom9 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.