Hogyan lehet megtalálni a pontos egyezést a VBA használatával az Excelben (5 módja)

  • Ossza Meg Ezt
Hugh West

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.xlsm

5 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.

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.