Exacte overeenkomst vinden met VBA in Excel (5 manieren)

  • Deel Dit
Hugh West

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

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

Hugh West is een zeer ervaren Excel-trainer en -analist met meer dan 10 jaar ervaring in de branche. Hij heeft een bachelor in Accounting en Finance en een master in Business Administration. Hugh heeft een passie voor lesgeven en heeft een unieke lesaanpak ontwikkeld die gemakkelijk te volgen en te begrijpen is. Zijn deskundige kennis van Excel heeft duizenden studenten en professionals over de hele wereld geholpen hun vaardigheden te verbeteren en uit te blinken in hun carrière. Via zijn blog deelt Hugh zijn kennis met de wereld en biedt hij gratis Excel-tutorials en online trainingen aan om individuen en bedrijven te helpen hun volledige potentieel te bereiken.