String zoeken met VBA in Excel (8 voorbeelden)

  • Deel Dit
Hugh West

Toepassing van VBA is de meest effectieve, snelste en veiligste methode om elke bewerking in Excel uit te voeren. In dit artikel laten we u zien hoe u bepaalde strings kunt vinden in een andere gegeven string met behulp van VBA in Excel.

Praktijksjabloon downloaden

U kunt het gratis oefensjabloon in Excel hier downloaden.

VBA om te zoeken in String.xlsm

InStr Functie

Microsoft Excel heeft een ingebouwde functie genaamd de InStr-functie om de positie van specifieke strings in een gegeven String te vinden.

Generieke syntax:

InStr([start], string1, string2, [vergelijk])

Hier,

Argumenten Vereist/ Facultatief Definitie
start Optioneel Beginpositie van de zoekopdracht.
  • Standaard wordt de InStr De functie berekent de tekenpositie door te tellen vanaf 1, niet vanaf de startpositie. U kunt dit dus leeg laten als u dat wilt.
string1 Vereist De string om in te zoeken, Primary String.
string2 Vereist De string waarnaar moet worden gezocht in de primaire string.
vergelijk Optioneel De InStr functie is standaard hoofdlettergevoelig. Maar als u een hoofdletterongevoelige InStr , dan kunt u hier het argument doorgeven om een bepaalde vergelijking uit te voeren. Dit argument kan de volgende waarden hebben,
  • vbBinaryCompare -> voert een binaire vergelijking uit, retourwaarde 0
  • vbTextCompare -> voert een tekstvergelijking uit, retourwaarde 1
  • vbDatabaseCompare -> voert een database vergelijking uit, retourwaarde 2

Standaard, InStr neemt vbBinaryCompare als vergelijkingsargument.

8 Eenvoudige voorbeelden om een specifieke positie in een gegeven string te vinden met VBA

Laten we enkele eenvoudige voorbeelden bekijken om de posities van bepaalde strings in een gegeven string te krijgen met behulp van VBA .

1. VBA om positie van tekst in string te vinden

Hieronder volgt een voorbeeld van InStr om de positie van een tekst in een string te vinden.

  • Druk op Alt + F11 op uw toetsenbord of ga naar de tab Ontwikkelaar -> Visual Basic om te openen Visual Basic-editor .

  • In het pop-up codevenster, klik in de menubalk op Invoegen -> Module .

  • Schrijf nu in het codevenster een eenvoudig InStr programma binnen een VBA Subprocedure (zie hieronder).
 Sub INSTR_Example() MsgBox InStr("Geluk is een keuze", "keuze") End Sub 

Uw code is nu klaar om te draaien.

  • Druk op F5 op uw toetsenbord of selecteer in de menubalk Run -> Run Sub/UserForm U kunt ook gewoon op de klein pictogram Play in de submenubalk om de macro uit te voeren.

U zult zien dat het pop-up berichtvenster u een nummer dat de positie aangeeft van de tekst die u wilde controleren.

Uitleg:

Onze primaire string, " Geluk is een keuze " is een zin van 21 letters (met spaties) en we wilden de positie van de tekst " keuze " in die string. De tekst " keuze " begon vanaf de 16e positie van de primaire string, vandaar dat we nummer 16 als onze uitvoer in het berichtvak.

2. VBA om tekst te vinden op een specifieke plaats in een string

Laten we nu eens kijken wat er zou gebeuren als we de positie van een bepaald getal zouden willen krijgen.

  • Dezelfde manier als voorheen, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
  • Schrijf in het codevenster een eenvoudige InStr programma hierboven en geef in het startargument de waarde door van de positie waarvandaan u uw tekst wilt tellen.
 Sub INSTR_Example() MsgBox InStr(17, "Geluk is een keuze", "keuze") End Sub 

  • Volgende, Ren de code.

U zult zien dat het pop-up berichtvenster u een nummer dat de positie aangeeft van de tekst vanuit een bepaalde positie die je wilde controleren.

Uitleg:

Aangezien wij reeds wisten (uit de bespreking van fase 1) dat de tekst " keuze " begon vanuit de positie van 16 dus hebben we twee " keuze " in de primaire string en stel 17 als onze 1e parameter om de eerste " keuze "Dus, we Ren de bovenstaande macro en het toonde ons positie nummer 27 wat precies het positienummer is van de tweede " keuze " in de gegeven string.

3. VBA om tekst te vinden met hoofdletterongevoelige InStr-functie in String

Vanaf de invoering van de InStr functie weet u al dat de InStr functie is hoofdlettergevoelig. Laten we dat uitzoeken met een voorbeeld.

Zie het volgende VBA code, waar we de positie van het woord " Keuze " met een hoofdletter "C" in de string " Geluk is een keuze " waar keuze wordt geschreven met een kleine "c" .

  • Ren de code en vind 0 als onze output.

Dat komt omdat de InStr functie behandelt hoofdletter "C" en kleine "c" anders. Dus het zocht naar het woord " Keuze " in de string en kreeg geen overeenkomst, dus gaf hij terug 0 .

  • Om de InStr functie hoofdletterongevoelig zet het argument vergelijken op vbTextCompare (zie hieronder).
 Sub INSTR_Example() MsgBox InStr(1, "Geluk is een keuze en keuze", "Keuze", vbTextCompare) End Sub 

  • Ren de code.

U krijgt de positie van de tekst van de string, of de tekst is geschreven in hoofdletters of kleine letters .

4. VBA om tekst rechts van een string te vinden

Tot nu toe is de InStr functie gaf ons alleen de positie van de linkerkant van de string. Maar wat als je de tekstpositie van de rechterkant van de string wilt vinden.

De InStrRev-functie zoekt van rechts. De InStrRev functie werkt op dezelfde manier als de InStr functie en het zal u de positie van een tekst uit de rechterkant van de string.

Zie de volgende voorbeelden om het verschil te begrijpen.

  • Als we de volgende code uitvoeren met de InStr functie dan,

het geeft ons de positie ( 16 ) van de eerste tekst " keuze ".

  • Maar als we dezelfde code uitvoeren met de InStrRev Functie dan,

het geeft ons de positie ( 27 ) van de laatste tekst " keuze ".

Vergelijkbare lezingen:

  • Volgende zoeken met VBA in Excel (2 voorbeelden)
  • Zoeken en vervangen met VBA (11 manieren)
  • Exacte overeenkomst vinden met VBA in Excel (5 manieren)

5. VBA om de positie van een teken in een tekenreeks te vinden

U kunt ook de positie van een bepaald teken in een tekenreeks vinden op dezelfde manier waarop u tekst hebt gevonden.

  • Kopieer de volgende code in uw VBA codevenster
 Sub Find_Character() Dim z As Long z = InStr("Geluk is een keuze", "e") MsgBox z End Sub 

  • En Ren de macro.

De eerste " e " in onze gegeven string is bij het nummer 7 positie.

6. VBA om substrings in een string te vinden

Hier zullen we leren hoe we kunnen vinden of een string een substring of niet.

Om dat te krijgen, moeten we een IF-verklaring in onze code.

  • Dezelfde manier als voorheen, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
  • Kopieer in het codevenster de volgende code en plak deze.
 Public Sub FindSub() Als InStr("Geluk is een keuze", "keuze") = 0 Dan MsgBox "Geen overeenkomst gevonden" Else MsgBox "Overeenkomst gevonden" End If End Sub 

Uw code is nu klaar om te draaien.

  • Ren de macro.

Als uw string bevat de substring dan krijg je een match gevonden anders geeft het geen match gevonden. In ons voorbeeld wilden we weten of onze primaire string " Geluk is een keuze " bevat het woord " keuze " of niet. Als dat zo is, krijgen we een Match gevonden resultaat.

7. VBA om een string in een celbereik te vinden

U kunt zoeken naar een bepaalde tekst in een celbereik en een bepaalde tekenreeks retourneren.

Kijk naar het volgende voorbeeld waar we " Dr. " en als er een match is zal het " Dokter ".

  • Hieronder staat de code om het hierboven besproken resultaat te krijgen,
 Sub Find_String_in_Range() Dim cell As Range Voor Elke cel In Range("B5:B10") Als InStr(cell.Value, "Dr.")> 0 Dan cell.Offset(0, 1).Value = "Doctor" End If Volgende cel End Sub 

  • Ren de code en het resultaat is hieronder te zien

  • U kunt de macro aanpassen aan uw behoefte. Als u bijvoorbeeld " Prof. " in een willekeurige cel van de string, en krijg " Professor " als terugkeer, geef dan gewoon " Prof. " als waarde in plaats van " Dr. ." in de 4e regel van de macro en " Professor " in plaats van " Dokter " in de 5e regel van de macro en definieer het nummer van het celbereik dienovereenkomstig.

8. VBA om een string in een cel te vinden

U kunt ook zoeken naar een bepaalde tekst in een enkele cel van de string en geeft een bepaalde string terug.

  • Kopieer de volgende code en plak die in het codevenster.
 Sub Find_String_in_Cell() Als InStr(Range("B5").Value, "Dr.")> 0 Dan Range("C5").Value = "Doctor" End If End Sub 

Het zal zoeken naar " Dr. " in Cel B5 en als het de overeenkomst vindt, geeft het " Dokter " in Cel C5 .

  • U kunt de macro aanpassen aan uw behoefte. Als u bijvoorbeeld " Prof. " in een willekeurige cel van de string, en krijg " Professor " als terugkeer, geef dan gewoon " Prof. " als waarde in plaats van " Dr. ." in de 2e regel van de macro en " Professor " in plaats van " Dokter " in de derde regel van de macro en definieer het referentienummer van de cel dienovereenkomstig.

Conclusie

Dit artikel toont u hoe u in Excel bepaalde teksten in tekenreeksen kunt vinden met behulp van VBA macro. Ik hoop dat dit artikel zeer nuttig voor u is geweest. Voel u vrij om vragen over het onderwerp te stellen.

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.