Indholdsfortegnelse
Hvis du er på udkig efter nogle af de nemmeste måder at finde et nøjagtigt match på ved hjælp af VBA så vil du finde denne artikel nyttig. Så lad os komme i gang med artiklen og lære, hvordan du kan finde et nøjagtigt match.
Download arbejdsbog
VBA Find nøjagtig match.xlsm5 måder at finde nøjagtig match på ved hjælp af VBA
Jeg har brugt følgende tabel, som indeholder nogle elevers resultater. Jeg vil forklare forskellige måder at finde det nøjagtige match på ved hjælp af denne tabel ved hjælp af VBA.
Til dette formål har jeg brugt Microsoft Excel 365-versionen, men du kan også bruge andre versioner, hvis det passer dig.
Metode-1: Finde nøjagtig match i en række celler
Hvis du vil finde et nøjagtigt match af en streng som f.eks. navnet på en elev og derefter finde denne elevs celleposition, kan du gøre dette ved at følge denne metode.
Her vil jeg finde et nøjagtigt match for den elev, der hedder "Joseph Micahel" .
Step-01 :
➤Gå til Udvikler Tab>> Visual Basic Mulighed
Derefter er det Visual Basic-editor vil åbne sig.
➤Gå til Indsæt Tab>> Modul Mulighed
Herefter skal en Modul vil blive oprettet.
Step-02 :
➤Skriv følgende kode
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
Her, "nøjagtig match" er navnet på arket og "B5:B10" er rækken af elevernes navne, og "Joseph Michael" er den studerendes navn, som skal findes.
rng er angivet som et intervalobjekt og str som en strengvariabel til at gemme adressen på det søgte emne.
IF vil tildele elementets adresse til str variabel.
➤Presse F5
Resultat :
Herefter får du følgende Meddelelsesboks som indeholder cellens position for den elev, der hedder "Joseph Michael" .
Læs mere: Find i et område med VBA i Excel: Inklusive nøjagtige og delvise matchninger
Metode-2: Finde nøjagtig match og erstatte den ved hjælp af VBA
Jeg vil vise, hvordan man finder den angivne elevs navn og derefter erstatter det med et andet navn, fordi dette navn ved en fejl er blevet skrevet her. Du kan find den ønskede streng og erstat den ved at følge denne metode.
Step-01 :
➤Follow Step-01 på Metode-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 If End With End Sub
Her, "find&erstatte" er navnet på arket og "B5:B10" er rækken af elevernes navne, og "Donald Paul" er den studerendes navn, som skal findes frem, og derefter "Henry Jackson" vil være den studerendes navn i stedet for det tidligere.
MED vil man undgå at gentage koden i hver enkelt erklæring.
IF vil tildele elementets adresse til str variabel og den DO løkken vil erstatte alle forekomster af søgeordet.
➤Presse F5
Resultat :
Herefter får du den nye elevs navn som "Henry Jackson" .
Metode-3: Finde nøjagtig og case-sensitiv match
Hvis du ønsker at finde et match, der tager hensyn til store og små bogstaver, skal du følge denne metode. Her har jeg to navne, der ligner hinanden, men der er forskel på store og små bogstaver, og afhængig af dette vil jeg erstatte den sidste elevs navn.
Step-01 :
➤Follow Step-01 på Metode-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 If End With EndUnder
Her, "skivene-sensitiv" er navnet på arket og "B5:B10" er rækken af elevernes navne, og "Donald Paul" er den studerendes navn, som skal findes frem, og derefter "Henry Jackson" vil være den studerendes navn i stedet for det tidligere.
MED vil man undgå at gentage koden i hver enkelt erklæring.
IF vil tildele elementets adresse til str variabel og den DO løkken vil erstatte alle forekomster af søgeordet.
➤Presse F5
Resultat :
Nu vil den studerendes navn ifølge sagen blive ændret til "Henry Jackson" .
Lignende læsninger:
- Sådan finder du String i en celle ved hjælp af VBA i Excel (2 metoder)
- VBA Find i kolonne i Excel (7 fremgangsmåder)
- Sådan finder du en streng med VBA i Excel (8 eksempler)
Metode-4: Brug af InStr-funktionen
Antag, at du ønsker at matche Pass eller Undlader at svare til navnene på de studerende afhængigt af den Resultat kolonne hvor Pass eller Fail er blevet skrevet. For at finde denne streng i Resultat kolonne og skrive ned "Bestået" i den Statuskolonne for de studerende, der har bestået eksamen, kan du bruge InStr-funktionen .
Step-01 :
➤Follow Step-01 på Metode-1
Sub Checkstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.Value, "Passed")> 0 Then cell.Offset(0, 1).Value = "Passed" Else cell.Offset(0, 1).Value = " " End If Next cell End Sub
Her er celleområdet C5:C10 som er den Resultat kolonne
InStr(cell. value, "Pass")> 0 er den tilstand, hvor tallet er større end nul (når cellen indeholder "Bestået" ), vil den følgende linje fortsætte og give resultatet i den tilstødende celle som Bestået .
Hvis betingelsen bliver falsk, betyder det, at en celle ikke indeholder nogen "Bestået" så er linjen under ELSE vil blive udført og give outputværdien i den tilstødende celle som Blank .
Denne løkke fortsætter for hver celle.
➤Presse F5
Resultat :
Derefter får du den "Bestået" status for de studerende, der har bestået.
Metode-5: Finde nøjagtig match og udtrække data
Hvis du ønsker at udtrække de tilsvarende data for en elev ved navn "Michael James" så kan du følge denne metode.
Step-01 :
➤Follow Step-01 på Metode-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 & i & ":D" & i).Value End If Next i End Sub
Her har jeg brugt B100 som den Aktivt arkområde (du kan bruge et hvilket som helst interval, alt efter hvad du bruger).
InStr(1, Range("B" & i), "Michael James")> 0 er betingelsen for at kontrollere, om cellen i kolonne B indeholder Michael James .
Range("E" & icount & ":G" & icount) er det område, hvor du vil have dine uddata, og Range("B" & i & ":D" & i).value vil give værdierne fra kolonnen B til D .
➤Presse F5
Resultat :
Herefter får du følgende udtrækkede data for de elever, der har navnet Michael James .
Øvelsesafsnit
For at du kan øve dig selv, har vi givet dig en Praksis afsnit som nedenfor i et ark med navnet Praksis . gør det venligst selv.
Konklusion
I denne artikel har jeg forsøgt at beskrive de letteste måder at finde et nøjagtigt match på ved hjælp af VBA i Excel effektivt. Jeg håber, at du vil finde det nyttigt. Hvis du har forslag eller spørgsmål, er du velkommen til at dele dem med os.