Inhoudsopgave
Bij het werken met Excel VBA-codes komen we een paar ingebouwde functies tegen die een complexe taak omzetten in een kleine éénregelige code. InStr is een dergelijke functie beschikbaar in Excel VBA die zoekt naar een bepaalde tekenreeks binnen een andere gegeven tekenreeks vanaf een bepaalde positie. Vandaag laat ik zien hoe je de InStr functie in VBA om te zoeken naar een specifieke tekenreeks binnen een andere gegeven tekenreeks.
Download Praktijk Werkboek
InStr Functie.xlsm
Inleiding tot VBA InStr-functie
- Samenvatting
Zoekt naar een specifieke tekenreeks binnen een gegeven tekenreeks, beginnend vanaf een gegeven positie. Als er een overeenkomst wordt gevonden, wordt de positie in de gegeven tekenreeks teruggegeven vanwaar de overeenkomst begon.
- Syntax
InStr([start],string1,string2,[vergelijk])
- Argumenten
ARGUMENT | VEREIST | BESCHRIJVING |
---|---|---|
[start] | Optioneel | De positie van waaruit het zoeken zal beginnen. De standaardinstelling is 1. |
string1 | Vereist | De string waarbinnen wordt gezocht naar een gegeven string. |
string2 | Vereist | De tekenreeks waarnaar wordt gezocht binnen een gegeven tekenreeks. |
[vergelijk] | Optioneel | Een numerieke waarde tussen {-1,0,1,2} die het type vergelijking specificeert. De standaardwaarde is -1 (vbUseCompareOption). Als de Option Compare-instructie niet is opgegeven, wordt Binary Comparison uitgevoerd. |
Let op:
- Hoewel de [start] argument en de [vergelijk] argument zijn optioneel, u heeft de [start] argument als u de [vergelijk] anders geeft het een foutmelding.
- Indien één of beide [start] argument en de [vergelijk] argument is Nul zul je een foutmelding krijgen.
- De vier opgegeven waarden in de [vergelijk] argument voert vier verschillende soorten vergelijkingen uit, die hieronder worden genoemd:
WAARDE | CONSTANT | BESCHRIJVING |
---|---|---|
-1 | vbUseCompareOption | Voert de vergelijking uit die is opgegeven in de optievergelijking. |
0 | vbBinaryCompare | Voert een binaire vergelijking uit. |
1 | vbTextCompare | Voert een tekstvergelijking uit. |
2 | vbDatabaseCompare | Voert een vergelijking uit op basis van uw database. |
- Optie Vergelijken statement is een statement voordat de hoofd-VBA-code begint. Het geeft aan of de code zal zoeken naar een binaire vergelijking of een tekstvergelijking wanneer dat nodig is.
Optie Vergelijken Tekst
- Eenvoudig gezegd , Binaire vergelijking betekent hoofdlettergevoelige vergelijking.
- Eenvoudig gezegd , Tekstvergelijking betekent hoofdletterongevoelige vergelijking.
- Retourwaarde
- Geeft als resultaat de positie in de string1 waarvan de string2 begonnen.
- Voor het geval string2 wordt niet gevonden binnen string1 uitgaande van de start positie, geeft 0 terug.
- Als de string1 is van nul lengte, geeft 0 terug.
- Als de string2 is van nul lengte, geeft het argument start .
- En tenslotte, als een van de string1 of string2 is Nul geeft een foutmelding.
3 Eenvoudige voorbeelden van het gebruik van de VBA InStr-functie
In dit deel zullen we drie eenvoudige voorbeelden zien van de toepassing van de VBA InStr functie in Excel. Laten we het eerste voorbeeld bekijken van de InStr functie in VBA-codes.
1. Bepalen of een adres een e-mailadres is of niet door de VBA InStr-functie te gebruiken
Hier hebben we een dataset genomen met een aantal contactadressen van klanten. Ons doel is om te bepalen of de adressen e-mailadressen zijn of niet.
Nu zullen we een VBA-code ontwikkelen met behulp van de InStr functie om te bepalen of het een Email Adres is of niet. Volg daarvoor de onderstaande stappen.
Stappen:
- Ga in het begin naar de Ontwikkelaar tabblad en selecteer Visual Basic ( Of druk op Alt+F11) om de VBA raam.
- Dan, op de VBA venster, ga naar Invoegen> Module .
- Plak daarna op de module de volgende code:
Functie BESLUIT(string1 Als String) Dim Positie Als Geheel getal Positie = InStr(1, string1, "@", 0) Als Positie = 0 Dan BESLUIT = "Niet e-mail" Anders BESLUIT = "E-mail" Einde Als Einde Functie
- Bovendien hebben we een functie gemaakt met de naam BESLUIT Het beslist of een adres een e-mailadres is of niet. Laten we de functie toepassen op de gegevensset die we hebben.
- Op cel C5 , schrijf de volgende formule op en vul de rest van de cellen automatisch in met behulp van Vulgreep .
=DECISION(B5)
- Zoals we kunnen zien, hebben we elk adres geïdentificeerd, of het nu een e-mailadres is of niet.
Hoe werkt de code?
- Functie BESLUIT(string1 Als String)
Dit creëert eerst een functie genaamd BESLUIT met een stringargument met de naam string1 .
- Dim Positie als geheel getal
Het declareert een gehele variabele met de naam Positie .
- Positie = InStr(1, string1, "@", 0)
Hiermee wordt de waarde van de Positie variabele als uitvoer van de InStr functie met de argumenten 1, string1, "@" en 0 Kortom, dit wijst de positie in het adres toe waar een "@" .
- Als Positie = 0 Dan BESLUIT = "Niet e-mail".
Het wijst de uitgang van de BESLUIT functie als "Niet e-mail" als de Positie variabele is 0 dat betekent dat er geen "@" in het adres.
(Onthoud dat als een string niet wordt gevonden binnen de gegeven string, de InStr functie retourneert 0 ).
- Else BESLUIT = "Email"
Dit wijst de uitvoer van de BESLUIT functie als "Email" als er een "@" in het adres. Dus de adressen waar de "@" worden gecategoriseerd als E-mail en de rest wordt gecategoriseerd als "Niet e-mail" .
Vergelijkbare lezingen
- Hoe VBA UCASE functie gebruiken in Excel (4 voorbeelden)
- MsgBox-functie gebruiken in Excel VBA (een complete richtlijn)
- Hoe VBA SPLIT-functie gebruiken in Excel (5 voorbeelden)
- LCase-functie gebruiken in VBA in Excel (met 4 voorbeelden)
- Gebruik van de Fix-functie in Excel VBA (4 voorbeelden)
2. VBA InStr-functie gebruiken voor De extensie van sommige e-mailadressen verwijderen
Hier hebben we een lijst met enkele e-mailadressen van enkele klanten. Deze keer halen we de extensie van het e-mailadres eruit, zoals of ze gmail.com of yahoo.com .
Volg daarvoor de onderstaande stappen.
Stappen:
- Om te beginnen opent u, net als bij de vorige methode, een nieuwe VBA module en plak de volgende code in het venster.
Functie EXTENSION(Email als String) Dim Positie als Integer Positie = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Daarnaast hebben we een functie gemaakt met de naam UITBREIDING Het haalt de extensie van elk e-mailadres eruit.
- Laten we bovendien deze functie toepassen op de gegevensset die we hebben. Voer eerst deze formule in op cel C5 en dubbelklik dan op de Vulgreep .
=EXTENSIE(B5)
- Tenslotte zien we dat we met succes de Extensie van alle E-mails hebben geëxtraheerd.
Hoe werkt de code?
- Functie EXTENSION(Email Als String)
Dit creëert een nieuwe functie genaamd UITBREIDING met een stringargument genaamd E-mail .
- Dim Positie als geheel getal
Dit deel declareert een gehele variabele met de naam Positie.
- Positie = InStr(1, Email, "@", 0)
Hiermee wordt de waarde van de Positie variabele als uitvoer van de InStr functie met de argumenten 1, Email, "@" en 0 Kortom, dit wijst de positie in de E-mail waar er een "@" .
- EXTENSIE = Rechts(Email, (Len(Email) - Positie))
Dit deel wijst de uitgang van de UITBREIDING functie als de tekens na het symbool "@" Dit is de vereiste verlenging van de E-mail .
3. De voor- of achternaam uit een naam halen door de VBA InStr-functie te gebruiken
Tenslotte zullen we een geheel andere taak uitvoeren. Deze keer hebben we de namen van enkele werknemers van een bedrijf. En we zullen proberen een functie te bouwen om ofwel de voornaam ofwel de achternaam van de werknemers te extraheren.
Volg daarvoor de onderstaande stappen.
Stappen:
- Ten eerste, vergelijkbaar met methode 1 Plak de onderstaande code in een nieuwe module in het VBA-venster.
Functie SHORTNAME(Naam als String, Eerste_ofLaatste als Integer) Dim Breek als Integer Breek = InStr(1, Naam, " ", 0) Als Eerste_ofLaatste = -1 Dan SHORTNAME = Links(Naam, Breek - 1) Anders SHORTNAME = Rechts(Naam, Len(Naam) - Breek) End If End Function
- Hier hebben we een functie gemaakt met de naam KORTE NAAM die ofwel de voornaam ofwel de achternaam uit een naam haalt. Laten we deze formule toepassen op onze gegevensverzameling.
- Om de eerste naam te extraheren, noteert u eerst de onderstaande formule in cel C5 .
=SHORTNAME(B5,-1)
- Om ten slotte de achternamen te extraheren, noteren wij de volgende formule in D5 :
=SHORTNAME(B5,1)
- Daarna, als we de rest van de cellen automatisch vullen met Vuller zullen we het gewenste resultaat zien.
Hoe werkt de code?
- Functie SHORTNAME(Naam als String, Eerste_ofLaatste als Integer)
Het creëert een nieuwe functie genaamd KORTE NAAM met een String argument genaamd Naam en één Integer Argument met de naam First_or_Last .
- Dim Break als geheel getal
Dit gedeelte declareert een nieuwe gehele variabele met de naam Pauze .
- Break = InStr(1, Name, " ", 0)
Het kent de waarde van de Pauze variabele als uitvoer van de InStr functie met de argumenten 1, Naam, " en 0 Kortom, dit wijst de positie in de Naam waar er een spatie (" ").
- Als First_or_Last = -1 Dan SHORTNAME = Left(Name, Break - 1)
Deze regel wijst de uitvoer van de KORTE NAAM functie als de tekens voor de ruimte als de First_or_Last argument is -1. Dit is de eerste naam.
- SHORTNAME = Right(Name, Len(Name) - Break)
Dit deel wijst de uitgang van de KORTE NAAM functie als de tekens na de ruimte als de First_or_Last argument is 1. Dit is de achternaam.
Conclusie
Zo kunt u VBA-codes schrijven met de InStr functie die de positie van een specifieke string binnen een andere gegeven string vindt, en dan kunt u uw eigen functies maken voor een verscheidenheid aan toepassingen. Verder, als u vragen heeft, voel u vrij om ons te vragen.