När du arbetar med VBA i Excel kan du behöva dela en sträng i olika delar baserat på en avgränsare.

om du till exempel har en adress kan du använda VBA Split-funktionen för att få olika delar av adressen som är åtskilda av ett komma (vilket skulle vara avgränsaren i det här fallet).

SPLIT är en inbyggd strängfunktion i Excel VBA som du kan använda för att dela upp en textsträng baserat på avgränsaren.,

denna handledning omfattar:

Excel VBA SPLIT Function – Syntax

Split ( Expression, , , )
  • Expression: det här är strängen som du vill dela baserat på avgränsaren. Till exempel, i fallet med adressexemplet, skulle hela adressen vara ”uttrycket”. Om detta är en nolllängdssträng ( ”” ) SPLIT-funktion skulle returnera en tom array.
  • avgränsare: detta är ett valfritt argument. Detta är avgränsaren som används för att dela upp argumentet ”uttryck”., Vid vårt adressexempel är ett kommatecken en avgränsare som används för att dela upp adressen i olika delar. Om du inte anger det här argumentet anses ett mellanslag vara standardbegränsaren. Om du ger en nolllängdssträng ( ”” ) returneras hela ’Expression’-strängen av funktionen.
  • Limit: detta är ett valfritt argument. Här anger du det totala antalet substrings som du vill returnera. Till exempel, om du bara vill returnera de tre första substrängarna från argumentet ”uttryck”, skulle detta vara 3., Om du inte anger det här argumentet är standardvärdet -1, vilket returnerar alla understrängar.
  • jämför: detta är ett valfritt argument. Här anger du vilken typ av jämförelse du vill att delningsfunktionen ska utföra när du utvärderar delsträngarna. Följande alternativ är tillgängliga:
    • när Jämför är 0: Detta är en binär jämförelse. Det betyder att om din avgränsare är en textsträng (låt oss säga ABC), så skulle det vara skiftlägeskänsligt. ”ABC” skulle inte vara lika med ”abc”.
    • när Jämför är 1: Detta är en textjämförelse., Det betyder att om din avgränsare är en textsträng (låt oss säga ABC), så även om du har ” abc ”i strängen ”uttryck”, skulle det betraktas som en avgränsare.

nu när vi har täckt grunderna i SPLIT-funktionen, låt oss se några praktiska exempel.

exempel 1 – Dela upp orden i en mening

Antag att jag har texten – ”den snabba bruna räven hoppar över den lata hunden”.

Jag kan använda SPLIT-funktionen för att få varje ord i denna mening till som ett separat objekt i en array.,

nedanstående kod skulle till detta:

Sub SplitWords()Dim TextStrng As StringDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result() = Split(TextStrng)End Sub

medan koden inte gör något användbart, kommer det att hjälpa dig att förstå vad Split-funktionen i VBA gör.

Split-funktionen delar upp textsträngen och tilldelar varje ord till resultaträkningen.

så i det här fallet:

  • Resultat(0) lagrar värdet ”
  • Resultat(1) lagrar värdet”Quick ”
  • Resultat(2) lagrar värdet”Brown ”och så vidare.

i det här exemplet har vi bara angett det första argumentet – vilket är texten som ska delas., Eftersom ingen avgränsare har angetts, tar det mellanslag som standard avgränsare.

viktigt:

  1. VBA SPLIT-funktionen returnerar en array som startar från bas 0.
  2. när resultatet av SPLIT-funktionen tilldelas en array måste matrisen deklareras som en Strängdatatyp. Om du deklarerar det som en Variant datatyp, det kommer att visa en typ obalans fel). I exemplet ovan, notera att jag har deklarerat resultat () som en sträng datatyp.,

exempel 2 – Räkna antalet ord i en mening

Du kan använda SPLIT-funktionen för att få det totala antalet ord i en mening. Tricket här är att räkna antalet element i matrisen som du får när du delar upp texten.

nedanstående kod skulle visa en meddelanderuta med ordet count:

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 det här fallet berättar UBound-funktionen den övre gränsen för matrisen (dvs. det maximala antalet element som matrisen har)., Eftersom basen av matrisen är 0 läggs 1 till för att få den totala ordantalet.

Du kan använda en liknande kod för att skapa en egen funktion i VBA som tar texten som inmatning och returnerar ordantalet.

nedanstående kod kommer att skapa denna funktion:

När du har skapat kan du använda WordCount-funktionen precis som vilken annan vanlig funktion som helst.

den här funktionen hanterar även inledande, avslutande och dubbla mellanslag mellan ord. Detta har möjliggjorts genom att använda TRIM-funktionen i VBA-koden.,

om du vill veta mer om hur denna formel fungerar för att räkna antalet ord i en mening eller vill lära sig om en icke-VBA formel sätt att få ordet räkna, kolla in den här guiden.

exempel 3 – med en annan avgränsare än Mellanslagstecken

i de två föregående exemplen har vi bara använt ett argument i delningsfunktionen, och resten var standardargumenten.

När du använder någon annan avgränsare måste du ange det i DELNINGSFORMELN.,

i nedanstående KOD Returnerar SPLIT-funktionen en matris baserad på ett kommatecken som avgränsare och visar sedan ett meddelande med varje ord i en separat rad.

i ovanstående kod har jag använt för nästa slinga för att gå igenom varje element i ”Result” – matrisen tilldela den till variabeln ”DisplayText”.

exempel 4 – Dela upp en adress i tre delar

med SPLIT-funktionen kan du ange hur många delningar du vill få. Till exempel, om jag inte anger något, skulle varje instans av avgränsaren användas för att dela strängen.,

men om jag anger 3 som gräns delas strängen endast upp i tre delar.

om jag till exempel har följande adress:

2703 Winifred Way, Indianapolis, Indiana, 46204

Jag kan använda Split-funktionen i VBA för att dela upp den här adressen i tre delar.

det delar de två första baserat på kommaavgränsaren och återstående del blir det tredje elementet i matrisen.,

nedanstående kod skulle visa adressen i tre olika rader i en meddelanderuta:

en av de praktiska användningarna av detta kan vara när du vill dela upp en enda radadress i formatet som visas i meddelanderutan. Då kan du skapa en egen funktion som returnerar adressen uppdelad i tre delar (med varje del i en ny rad).

följande kod skulle göra detta:

När du har den här koden i modulen kan du använda funktionen (Threepartiddress) i arbetsboken precis som vilken annan Excel-funktion som helst.,

den här funktionen tar ett argument – cellreferensen som har adressen.

Observera att för att den resulterande adressen ska visas i tre olika rader måste du tillämpa omslagstextformatet på cellerna (det finns på fliken Hem i justeringsgruppen). Om formatet ”Wrap Text” inte är aktiverat ser du hela adressen som en enda rad.

exempel 5-hämta stadens namn från adressen

med delad funktion i VBA kan du ange vilken del av den resulterande matrisen du vill använda.,Antag till exempel att jag delar upp följande adress baserat på kommatecken som avgränsare:

2703 Winifred Way, Indianapolis, Indiana, 46204

den resulterande matrisen skulle se ut som visas nedan:

{"2703 Winifred Way", "Indianapolis", "Indiana", "46204"}

eftersom det här är en array kan jag välja att visa eller returnera en viss del av den här matrisen.

Nedan följer en kod för en egen funktion, där du kan ange ett nummer och det kommer att returnera det elementet från matrisen. Om jag till exempel vill ha statsnamnet kan jag ange 3 (eftersom det är det tredje elementet i matrisen).,

ovanstående funktion tar två argument, cellreferensen som har adressen och det elementnummer du vill returnera. Split-funktionen delar adresselementen och tilldelar den till resultatvariabeln.

då returnerar det elementnummer som du angav som det andra argumentet. Observera att eftersom basen är 0, elementnummer – 1 används för att returnera rätt del av adressen.

den här anpassade formeln passar bäst när du har ett konsekvent format i hela adressen – dvs staden nämns alltid efter de två kommatecken., Om data inte är konsekvent får du inte önskat resultat.

om du vill ha stadens namn kan du använda 2 som det andra argumentet. Om du använder ett tal som är högre än det totala antalet element, skulle det returnera # – värdet! fel.

Du kan ytterligare förenkla koden som visas nedan:

i ovanstående kod, istället för att använda resultatvariabeln, returnerar den endast det angivna elementnumret.

Så om du har delat (”God morgon”) (0), skulle det bara returnera det första elementet, vilket är”bra”.,

På samma sätt returnerar den endast det angivna elementnumret i ovanstående kod.

Du kanske också gillar följande Excel Tutorials:

  • Excel VBA Instr funktion – förklaras med exempel.
  • så här sorterar du Data i Excel med VBA (en steg-för-steg-Guide).
  • 7 fantastiska saker Excel Text till kolumner kan göra för dig.
  • Hur får man ordantalet i Excel.
  • VBA TRIM funktion.