Innehållsförteckning
Om du letar efter några av de enklaste sätten att hitta en exakt matchning med hjälp av VBA Om du har en bra idé, kommer du att tycka att den här artikeln är användbar. Så låt oss börja med artikeln och lära känna hur man hittar en exakt matchning.
Ladda ner arbetsboken
VBA Hitta exakt matchning.xlsm5 sätt att hitta exakt matchning med VBA
Jag har använt följande tabell som innehåller några elevers resultat. Jag kommer att förklara olika sätt att hitta en exakt matchning med hjälp av denna tabell och med hjälp av VBA.
I detta syfte har jag använt Microsoft Excel 365-versionen, men du kan använda andra versioner om du vill.
Metod-1: Hitta exakt matchning i en rad celler
Om du vill hitta en exakt matchning av en sträng, t.ex. namnet på en elev, och sedan hitta cellpositionen för den här eleven kan du göra detta genom att följa den här metoden.
Här ska jag hitta en exakt matchning för eleven som heter "Joseph Micahel" .
Step-01 :
➤Gå till Utvecklare Fliken>> Visual Basic Alternativ
Därefter är det Redigerare för Visual Basic kommer att öppnas.
➤Gå till Infoga Fliken>> Modul Alternativ
Efter detta kommer en Modul kommer att skapas.
Step-02 :
➤Skriv följande kod
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
Här, "exakt matchning" är arkets namn och "B5:B10" är intervallet för elevernas namn, och "Joseph Michael" är den studerandes namn som ska tas fram.
rng deklareras som ett intervallobjekt och str som en strängvariabel för att lagra adressen till det sökta objektet.
IF kommer att tilldela objektets adress till str variabel.
➤Press F5
Resultat :
Därefter får du följande Meddelandebox som innehåller cellpositionen för den elev som heter "Joseph Michael" .
Läs mer: Hitta inom ett intervall med VBA i Excel: inkludera exakta och partiella matchningar
Metod-2: Hitta exakt matchning och ersätta den med hjälp av VBA
Jag kommer att visa hur man hittar den angivna elevens namn och sedan ersätter det med ett annat namn, eftersom detta namn på något sätt felaktigt har skrivits här. Du kan hitta den önskade strängen och ersätta den genom att följa den här metoden.
Step-01 :
➤Följ Step-01 på Metod-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 Sub
Här, "hitta&ersätta" är arkets namn och "B5:B10" är intervallet för elevernas namn, och "Donald Paul" är studentens namn som ska tas fram och sedan "Henry Jackson" kommer att vara elevens namn i stället för det tidigare namnet.
MED undviker att koden upprepas i varje yttrande.
IF kommer att tilldela objektets adress till str variabeln och den DO kommer att ersätta alla förekomster av sökordet.
➤Press F5
Resultat :
Därefter får du den nya elevens namn som "Henry Jackson" .
Metod-3: Hitta exakta och skiftlägeskänsliga matchningar
Om du vill hitta en matchning som tar hänsyn till stor- och små bokstäver följer du den här metoden. Här har jag två namn som liknar varandra, men det finns en skillnad i stor- och småbokstäverna, och beroende på stor- och småbokstäverna kommer jag att ersätta den sista studentens namn.
Step-01 :
➤Följ Step-01 på Metod-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 End With EndUnder
Här, "skiftlägeskänslig" är arkets namn och "B5:B10" är intervallet för elevernas namn, och "Donald Paul" är den studerandes namn som ska tas fram, och sedan "Henry Jackson" kommer att vara elevens namn i stället för det tidigare namnet.
MED undviker att koden upprepas i varje yttrande.
IF kommer att tilldela objektets adress till str variabeln och den DO kommer att ersätta alla förekomster av sökordet.
➤Press F5
Resultat :
Enligt fallet kommer elevens namn att ändras till "Henry Jackson" .
Liknande läsningar:
- Hur man hittar strängar i en cell med VBA i Excel (2 metoder)
- VBA Hitta i kolumnen i Excel (7 metoder)
- Hur man hittar strängar med VBA i Excel (8 exempel)
Metod-4: Använda InStr-funktionen
Antag att du vill matcha Passa eller . Underlåtenhet att svara till elevernas namn beroende på vilken typ av Resultatkolumn där Passa eller . Fail har skrivits. För att hitta denna sträng i Resultatkolumn och skriva ner "Godkänd" i den Statuskolumn för de elever som har klarat provet, kan du använda InStr-funktionen .
Step-01 :
➤Följ Step-01 på Metod-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
Här är cellintervallet C5:C10 som är den Resultatkolumn
InStr(cell. value, "Pass")> 0 är det tillstånd där talet är större än noll (när cellen innehåller "Pass" ) så fortsätter följande rad och ger resultatet i den intilliggande cellen som Godkänd .
Om villkoret blir falskt betyder det att en cell inte innehåller någon "Pass" då raden under ELSE kommer att utföras och ge utdatavärdet i den intilliggande cellen som Blank .
Denna slinga fortsätter för varje cell.
➤Press F5
Resultat :
Därefter får du "Godkänd" status för de studerande som har klarat sig.
Metod-5: Hitta exakt matchning och extrahera data
Om du vill extrahera motsvarande data för en elev som heter "Michael James" kan du följa den här metoden.
Step-01 :
➤Följ Step-01 på Metod-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
Här har jag använt mig av B100 som Aktivt bladområde (du kan använda vilket intervall som helst beroende på vad du använder).
InStr(1, Range("B" & i), "Michael James")> 0 är villkoret för att kontrollera om cellen i kolumnen B innehåller Michael James .
Range("E" & icount & ":G" & icount) är det område där du vill ha dina utdata och Range("B" & i & ":D" & i).value kommer att ge värdena från kolumnen B till D .
➤Press F5
Resultat :
Därefter får du följande extraherade data för de elever som har namnet Michael James .
Övningssektionen
För att du ska kunna öva på egen hand har vi tillhandahållit en Praktik som nedan i ett ark som heter Praktik . Gör det själv.
Slutsats
I den här artikeln har jag försökt att beskriva de enklaste sätten att hitta en exakt matchning med hjälp av VBA i Excel på ett effektivt sätt. Jag hoppas att du kommer att tycka att den är användbar. Om du har några förslag eller frågor, är du välkommen att dela med dig av dem till oss.