Inhoudsopgave
Als u op zoek bent naar enkele van de gemakkelijkste manieren om een exacte overeenkomst te vinden met behulp van VBA Laten we dus beginnen met het artikel en de manieren leren kennen om een exacte overeenkomst te vinden.
Werkboek downloaden
VBA Exacte overeenkomst zoeken.xlsm5 manieren om een exacte overeenkomst te vinden met VBA
Ik heb de volgende tabel met de resultaten van enkele studenten gebruikt. Ik zal verschillende manieren uitleggen om de exacte overeenkomst te vinden door deze tabel te gebruiken met behulp van VBA.
Voor dit doel heb ik Microsoft Excel 365 versie gebruikt, u kunt elke andere versie gebruiken volgens uw gemak.
Methode-1: Exacte overeenkomst vinden in een bereik van cellen
Als u een exacte overeenkomst wilt vinden van een tekenreeks zoals de naam van een student en dan de celpositie van deze student wilt vinden, kunt u dit doen door deze methode te volgen.
Hier ga ik een exacte match vinden voor de student met de naam "Joseph Micahel" .
Step-01 :
Ga naar Ontwikkelaar Tab>> Visual Basic Optie
Dan, de Visual Basic-editor gaat open.
Ga naar Plaats Tab>> Module Optie
Daarna, een Module zal worden gecreëerd.
Step-02 :
Schrijf de volgende code
Sub searchtxt() Dim rng als Range Dim str als 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
Hier, "exacte match" is de bladnaam en "B5:B10" is de reeks namen van studenten, en "Joseph Michael" is de naam van de leerling die moet worden achterhaald.
rng is gedeclareerd als een bereikobject en str als een stringvariabele om het adres van het gezochte item op te slaan.
De ALS statement zal het adres van het item toewijzen aan de str variabel.
➤Press F5
Resultaat :
Daarna krijg je het volgende Berichtenbox die de celpositie van de student met de naam "Joseph Michael" .
Lees meer: Zoeken binnen een bereik met VBA in Excel: inclusief exacte en gedeeltelijke overeenkomsten
Methode-2: Exacte overeenkomst vinden en vervangen met VBA
Ik zal laten zien hoe u de naam van de aangegeven student kunt vinden en vervolgens vervangen door een andere naam omdat deze naam hier op de een of andere manier per ongeluk is geschreven. U kunt zoek de gewenste string en vervang hem door deze methode te volgen.
Step-01 :
volgen Step-01 van Methode-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
Hier, "find&replace" is de bladnaam en "B5:B10" is de reeks namen van studenten, en "Donald Paul" is de naam van de student die moet worden achterhaald en dan "Henry Jackson" zal de naam van de leerling zijn in plaats van de vorige.
MET verklaring voorkomt dat het stuk code in elke verklaring wordt herhaald.
De ALS statement zal het adres van het item toewijzen aan de str variabele en de DO lus zal alle voorkomens van het zoekwoord vervangen.
➤Press F5
Resultaat :
Daarna krijgt u de naam van de nieuwe leerling als "Henry Jackson" .
Methode-3: Exacte en hoofdlettergevoelige overeenkomst vinden
Als u een hoofdlettergevoelige overeenkomst wilt vinden, volg dan deze methode. Hier heb ik twee namen die op elkaar lijken, maar er is een verschil in de hoofdletters en afhankelijk van het geval zal ik de naam van de laatste student vervangen.
Step-01 :
volgen Step-01 van Methode-1
Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("hoofdlettergevoelig").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 WithSub
Hier, "hoofdlettergevoelig" is de bladnaam en "B5:B10" is de reeks namen van studenten, en "Donald Paul" is de naam van de student die moet worden achterhaald, en vervolgens "Henry Jackson" zal de naam van de leerling zijn in plaats van de vorige.
MET verklaring voorkomt dat het stuk code in elke verklaring wordt herhaald.
De ALS statement zal het adres van het item toewijzen aan de str variabele en de DO lus zal alle voorkomens van het zoekwoord vervangen.
➤Press F5
Resultaat :
Nu, volgens de zaak, wordt de naam van de student veranderd in "Henry Jackson" .
Vergelijkbare lezingen:
- String in een cel zoeken met VBA in Excel (2 methoden)
- VBA zoeken in kolom in Excel (7 benaderingen)
- String zoeken met VBA in Excel (8 voorbeelden)
Methode-4: Gebruik van de InStr-functie
Stel, u wilt overeenkomen met Pas of Niet corresponderen aan de namen van de studenten afhankelijk van de Resultaat kolom waarbij Pas of Fail is geschreven. Om deze string te vinden in de Resultaat kolom en schrijf op "Geslaagd" in de Statuskolom voor de studenten die het examen hebben gehaald, kunt u de InStr-functie .
Step-01 :
volgen Step-01 van Methode-1
Sub Checkstring() Dim cel Als Bereik Voor Elke cel In Bereik("C5:C10") Als InStr(cell.Value, "Pass")> 0 Dan cell.Offset(0, 1).Value = "Passed" Else cell.Offset(0, 1).Value = " " End If Volgende cel End Sub
Hier is het celbereik C5:C10 die de Resultaat kolom
InStr(cell. value, "Pass")> 0 is de voorwaarde waarbij het getal groter is dan nul (wanneer de cel bevat "Pass" ) dan zal de volgende regel doorgaan en de uitvoer in de aangrenzende cel geven als Geslaagd .
Als de voorwaarde onwaar wordt, betekent dit dat een cel geen "Pass" dan is de lijn onder ELSE wordt uitgevoerd en geeft de outputwaarde in de aangrenzende cel als Blanco .
Deze lus gaat door voor elke cel.
➤Press F5
Resultaat :
Dan krijg je de "Geslaagd" status voor de studenten die geslaagd zijn.
Methode-5: Exacte overeenkomst vinden en gegevens extraheren
Als u de overeenkomstige gegevens voor een leerling met de naam "Michael James" dan kun je deze methode volgen.
Step-01 :
volgen Step-01 van Methode-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
Hier heb ik gebruikt B100 als de Actief blad Bereik (u kunt elk bereik gebruiken naargelang uw gebruik).
InStr(1, Range("B" & i), "Michael James")> 0 is de voorwaarde om te controleren of de cel in kolom B bevat Michael James .
Range("E" & icount & ":G" & icount) is het bereik waar u uw uitvoergegevens wilt hebben en Range("B" & i & ":D" & i).value geeft de waarden van de kolom B naar D .
➤Press F5
Resultaat :
Daarna krijgt u de volgende gegevens voor de leerlingen met de naam Michael James .
Praktijk Sectie
Om zelf te oefenen hebben we een Praktijk sectie zoals hieronder in een blad met de naam Praktijk Doe het alsjeblieft zelf.
Conclusie
In dit artikel heb ik geprobeerd de gemakkelijkste manieren om een exacte overeenkomst te vinden met behulp van VBA Hopelijk vindt u het nuttig. Als u suggesties of vragen heeft, voel u vrij om ze met ons te delen.