Tartalomjegyzék
Ha a legegyszerűbb módszereket keresi a pontos egyezés megtalálásához a következők segítségével VBA , akkor ezt a cikket hasznosnak fogja találni. Tehát kezdjük el a cikket, és ismerjük meg a pontos egyezés megtalálásának módjait.
Munkafüzet letöltése
VBA Pontos egyezés keresése.xlsm5 módja a pontos egyezés keresésének a VBA használatával
A következő táblázatot használtam, amely néhány diák eredményeinek rekordjait tartalmazza. A pontos egyezés megtalálásának különböző módjait fogom elmagyarázni a táblázat segítségével, az alábbi táblázat segítségével. VBA.
Erre a célra a Microsoft Excel 365 verziót használtam, Ön bármilyen más verziót is használhat a kényelme szerint.
Módszer-1: Pontos egyezés keresése egy cellatartományban
Ha egy karakterlánc, például egy diák neve pontos egyezését szeretné megtalálni, majd meg szeretné találni a diák cellapozícióját, akkor ezt a módszerrel teheti meg.
Itt a következő diák pontos egyezését fogom megtalálni: a diák neve "Joseph Micahel" .
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 searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Joseph Michael", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If End Sub
Tessék, "pontos egyezés" a lap neve és "B5:B10" a tanulók nevének tartománya, és "Joseph Michael" a diák neve, amelyet ki kell deríteni.
rng tartományobjektumként van deklarálva, és str stringváltozóként a keresett elem címét tárolja.
A IF utasítás hozzárendeli az elem címét a str változó.
➤Press F5
Eredmény :
Ezt követően a következőket kapja Üzenetdoboz amely a diák cellapozícióját tartalmazza "Joseph Michael" .
Bővebben: Keresés egy tartományon belül VBA-val az Excelben: pontos és részleges egyezések bevonásával
Módszer-2: Pontos egyezés keresése és helyettesítése VBA használatával
Megmutatom, hogyan lehet megtalálni a jelzett diák nevét, majd kicserélni egy másik névre, mert valahogy tévesen ez a név került ide. Meg lehet keresse meg a kívánt karakterláncot és cserélje ki ezt a módszert követve.
Step-01 :
➤Follow Step-01 a Módszer-1
Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End With End Sub
Tessék, "find&replace" a lap neve és "B5:B10" a tanulók nevének tartománya, és "Donald Paul" a tanuló neve, amelyet ki kell deríteni, majd "Henry Jackson" a diák neve lesz az előző helyett.
WITH utasítással elkerülhető a kódrészlet ismétlése minden utasításban.
A IF utasítás hozzárendeli az elem címét a str változó és a DO ciklus a keresett szó minden előfordulását helyettesíti.
➤Press F5
Eredmény :
Ezután az új diák neve a következő lesz "Henry Jackson" .
Módszer-3: Pontos és nagy- és kisbetű-érzékeny egyezés keresése
Ha nagy- és kisbetűs egyezést szeretne találni, akkor kövesse ezt a módszert. Itt van két egymáshoz hasonló név, de van különbség a nagy- és kisbetűk között, és a nagy- és kisbetűtől függően az utolsó diák nevét fogom kicserélni.
Step-01 :
➤Follow Step-01 a Módszer-1
Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End With End EndSub
Tessék, "case-sensitive" a lap neve és "B5:B10" a tanulók nevének tartománya, és "Donald Paul" a tanuló neve, amelyet ki kell deríteni, majd "Henry Jackson" a diák neve lesz az előző helyett.
WITH utasítással elkerülhető a kódrészlet ismétlése minden utasításban.
A IF utasítás hozzárendeli az elem címét a str változó és a DO ciklus a keresett szó minden előfordulását helyettesíti.
➤Press F5
Eredmény :
Most, az ügy szerint, a tanuló neve a következőre változik "Henry Jackson" .
Hasonló olvasmányok:
- Hogyan keressünk egy karakterláncot egy cellában a VBA használatával az Excelben (2 módszer)
- VBA keresés az Excel oszlopban (7 megközelítés)
- Hogyan keresse meg a karakterláncot a VBA-val az Excelben (8 példa)
Módszer-4: InStr függvény használata
Tegyük fel, hogy a 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 Ezt a karakterláncot a Eredmény oszlop és írja le "Átment" a Állapot oszlop a sikeres vizsgát tett tanulók számára, akkor a az InStr függvény .
Step-01 :
➤Follow Step-01 a Módszer-1
Sub Checkstring() 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 = " " 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 Üres .
Ez a ciklus minden egyes cellánál folytatódik.
➤Press F5
Eredmény :
Ezután megkapja a "Átment" státusz az átvett hallgatók számára.
Módszer-5: Pontos egyezés keresése és az adatok kinyerése
Ha ki szeretné nyerni a megfelelő adatokat egy diákhoz, akinek a neve "Michael James" akkor ezt a módszert követheti.
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 James")> 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 (bármilyen tartományt használhat a felhasználásnak megfelelően).
InStr(1, Range("B" & i), "Michael James")> 0 a feltétel annak ellenőrzésére, hogy az oszlopban lévő cella B a címen található. Michael James .
Range("E" & icount & ":G" & icount) az a tartomány, ahová a kimeneti adatokat szeretnénk, és Range("B" & i & ":D" & i).value a következő oszlop é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ókra vonatkozóan Michael James .
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 bemutatni a legegyszerűbb módszereket a pontos egyezés megtalálásához a következők segítségével VBA Remélem, hasznosnak találja majd. Ha bármilyen javaslata vagy kérdése van, nyugodtan ossza meg velünk.