Når du arbejder med VBA i Excel, kan du have behov for at opdele en streng i forskellige dele, der er baseret på en afgrænsning.har en adresse, kan du bruge VBA-Split-funktionen til at få forskellige dele af adressen, der er adskilt af et komma (hvilket ville være afgrænseren i dette tilfælde).
SPLIT er en indbygget strengfunktion i E .cel VBA, som du kan bruge til at opdele en tekststreng baseret på afgrænseren.,
Denne Tutorial Dækker:
Excel VBA SPLIT-Funktion – Syntaks
Split ( Expression, , , )
- Udtryk: Dette er den streng, som du vil opdele, der er baseret på den afgrænser. For eksempel, i tilfælde af adresseeksemplet, ville hele adressen være ‘udtrykket’. Hvis dette er en null-længde streng ( “” ) SPLIT funktion ville returnere en tom Matri..
- Delimiter: dette er et valgfrit argument. Dette er den afgrænser, der bruges til at opdele ‘udtryk’ argument., I tilfælde af vores adresseeksempel er et komma en afgrænsning, der bruges til at opdele adressen i forskellige dele. Hvis du ikke angiver dette argument, betragtes et mellemrumstegn som standardafgrænseren. Hvis du giver en streng med nul længde (“”), returneres hele “udtryk” -strengen af funktionen.
- grænse: Dette er et valgfrit argument. Her angiver du det samlede antal substrings, du vil returnere. For eksempel, hvis du kun vil returnere de første tre substrings Fra ‘e Expressionpression’ – argumentet, ville dette være 3., Hvis du ikke angiver dette argument, er standard -1, som returnerer alle substrings.
- Sammenlign: dette er et valgfrit argument. Her specificerer du den type sammenligning, du vil have, at SPLIT-funktionen skal udføre, når du evaluerer substrings. Følgende muligheder er tilgængelige:
- når Sammenlign er 0: Dette er en binær sammenligning. Dette betyder, at hvis din afgrænsning er en tekststreng (lad os sige ABC), ville dette være store og små bogstaver. ‘ABC’ ville ikke være lig med ‘abc’.
- når Sammenligne er 1: Dette er en tekst sammenligning., Dette betyder, at hvis din afgrænsning er en tekststreng (lad os sige ABC), så selvom du har ‘abc’ i ‘E .pression’ – strengen, vil det blive betragtet som en afgrænsning.
nu hvor vi har dækket det grundlæggende i SPLIT-funktionen, Lad os se et par praktiske eksempler.
eksempel 1 – Opdel ordene i en sætning
Antag, at jeg har teksten – “den hurtige brune ræv hopper over den dovne hund”.
Jeg kan bruge SPLIT-funktionen til at få hvert ord i denne sætning til som et separat element i en Matri..,
nedenstående kode ville til dette:
Sub SplitWords()Dim TextStrng As StringDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result() = Split(TextStrng)End Sub
mens koden ikke gør noget nyttigt, vil det hjælpe dig med at forstå, hvad Split-funktionen i VBA gør.
Split-funktion opdeler tekststrengen og tildeler hvert ord til Resultatarrayet.
Så i dette tilfælde er:
- Resultat(0) gemmer værdien “De”
- Resultat(1) gemmer værdien “Hurtig”
- Resultat(2) gemmer værdien “Brun” og så videre.
i dette eksempel har vi kun angivet det første argument – som er teksten, der skal opdeles., Da der ikke er angivet nogen afgrænsning, tager det mellemrumstegn som standardafgrænseren.
vigtig note:
- VBA SPLIT-funktion returnerer et array, der starter fra base 0.
- når resultatet af SPLIT-funktionen er tildelt et array, skal arrayet deklareres som en Strengdatatype. Hvis du erklærer det som en Variant datatype, vil det vise en type mismatch fejl). I eksemplet ovenfor skal du bemærke, at jeg har erklæret resultat() som en Strengdatatype.,
eksempel 2 – Tæl antallet af ord i en sætning
Du kan bruge SPLIT-funktionen til at få det samlede antal ord i en sætning. Tricket her er at tælle antallet af elementer i den Matri array, Du får, når du deler teksten.
nedenstående kode viser en meddelelsesboks med ordtællingen:
Sub WordCount()Dim TextStrng As StringDim WordCount As IntegerDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result = Split(TextStrng)WordCount = UBound(Result()) + 1MsgBox "The Word Count is " & WordCountEnd Sub
i dette tilfælde fortæller UBound-funktionen os den øvre grænse af arrayet (dvs.det maksimale antal elementer, arrayet har)., Da basen af arrayet er 0, tilføjes 1 for at få det samlede ordantal.
Du kan bruge en lignende kode til at oprette en brugerdefineret funktion i VBA, der tager teksten som input og returnerer ordtællingen.
nedenstående kode opretter denne funktion:
Når du er oprettet, kan du bruge Worordcount-funktionen ligesom enhver anden almindelig funktion.
denne funktion håndterer også førende, efterfølgende og dobbelt mellemrum mellem ord. Dette er gjort muligt ved at bruge TRIM-funktionen i VBA-koden.,
Hvis du vil lære mere om, hvordan denne formel fungerer til at tælle antallet af ord i en sætning eller vil lære om en ikke-VBA-formel måde at få ordtællingen på, så tjek denne tutorial.
eksempel 3 – Brug af en anden afgrænsning end mellemrumstegn
i de to foregående eksempler har vi kun brugt et argument i SPLIT-funktionen, og resten var standardargumenterne.
når du bruger en anden afgrænsning, skal du angive det i SPLIT-formlen.,
i nedenstående KODE Returnerer SPLIT-funktionen et array baseret på et komma som afgrænseren og viser derefter en meddelelse med hvert ord i en separat linje.
I ovenstående kode, jeg har brugt den Til Næste løkke til at gå gennem hvert element af ‘Resultat’ array tildele den til ‘DisplayText’ – variablen.
eksempel 4 – Opdel en adresse i tre dele
med SPLIT-funktionen kan du angive, hvor mange antal opdelinger du vil have. For eksempel, hvis jeg ikke angiver noget, vil hver forekomst af afgrænseren blive brugt til at opdele strengen.,
men hvis jeg angiver 3 som grænse, bliver strengen kun opdelt i tre dele.
for eksempel, hvis jeg har følgende adresse:
2703 Winifred Way, Indianapolis, Indiana, 46204
Jeg kan bruge Split-funktionen i VBA til at opdele denne adresse i tre dele.
det opdeler de to første baseret på kommaafgrænseren, og den resterende del bliver det tredje element i arrayet.,
nedenstående kode vil vise adressen i tre forskellige linjer i en meddelelsesboks:
En af de praktiske anvendelser af dette kan være, når du ønsker at opdele en enkelt linje adresse i det format, der er vist i besked feltet. Derefter kan du oprette en brugerdefineret funktion, der returnerer adressen opdelt i tre dele (med hver del i en ny linje).
følgende kode vil gøre dette:
Når du har denne kode i modulet, kan du bruge funktionen (ThreePartAddress) i projektmappen, ligesom enhver anden Excel-funktion.,
denne funktion tager et argument – cellehenvisningen, der har adressen.
Bemærk, at for at den resulterende adresse skal vises i tre forskellige linjer, skal du anvende wraprap-tekstformatet på cellerne (det er i fanen Startside i Justeringsgruppen). Hvis formatet’ Wraprap te .t ‘ ikke er aktiveret, vil du se hele adressen som en enkelt linje.
eksempel 5 – Hent bynavnet fra adressen
med Split-funktion i VBA kan du angive, hvilken del af det resulterende array du vil bruge.,
For eksempel, formoder jeg at opdele den følgende adresse baseret på det komma som skilletegn:
2703 Winifred Way, Indianapolis, Indiana, 46204
Den resulterende array ville se noget, som vist nedenfor:
{"2703 Winifred Way", "Indianapolis", "Indiana", "46204"}
Da dette er et array, jeg kan vælge at vise eller returnere en bestemt del af dette array.
nedenfor er en kode til en brugerdefineret funktion, hvor du kan angive et nummer, og det vil returnere dette element fra arrayet. For eksempel, hvis jeg vil have statens navn, kan jeg angive 3 (da det er det tredje element i arrayet).,
ovenstående funktion tager to argumenter, den cellehenvisning, der har adressen og det elementnummer, du vil returnere. Split-funktionen opdeler adresseelementerne og tildeler den til Resultatvariablen.
derefter returnerer det elementnummeret, som du angav som det andet argument. Bemærk, at da basen er 0, Elementnummer-1 bruges til at returnere den korrekte del af adressen.
Hvis du vil have bynavnet, kan du bruge 2 som det andet argument. Hvis du bruger et tal, der er højere end det samlede antal elementer, vil det returnere # – værdien! fejl.
Du kan yderligere forenkle koden som vist nedenfor:
i ovenstående KODE Returnerer den kun det specificerede elementnummer i stedet for at bruge Resultatvariablen.
så hvis du har delt(“God Morgen”)(0), ville det kun returnere det første element, som er “godt”.,
tilsvarende returnerer den kun det angivne elementnummer i ovenstående kode.
Du Kan Også godt Lide Følgende Excel-Tutorials:
- Excel VBA-InStr Funktion – Forklaret med Eksempler.
- sådan sorteres Data i E .cel ved hjælp af VBA (en trinvis vejledning).
- 7 fantastiske ting E .cel tekst til kolonner kan gøre for dig.
- Sådan får du ordtællingen i E .cel.
- VBA TRIM-funktion.