Innehållsförteckning
I den här artikeln visar jag hur du kan dela upp en sträng i en array i VBA . Split är en av de viktigaste och mest använda funktionerna som vi använder i VBA Du lär dig att dela upp en sträng i VBA på alla möjliga sätt.
VBA Split-funktion (snabbvisning)
=Split(Expression As String, [Delimiter], [Limit As Long=1], [CompareAsVbCompareMethod=vbBinaryCompare])
Ladda ner övningsboken
Dela en sträng till en array.xlsm3 sätt att dela upp en sträng i en matris i VBA
Låt oss ha ett snöre i handen "Vi ansökte om visum från USA, Kanada, Australien och Frankrike." .
Jag ska visa dig hur du kan dela upp strängen i en array på alla möjliga sätt med hjälp av Split-funktion på VBA .
1. Använd valfri avgränsare för att dela upp en sträng i en matris i VBA
Du kan använda vilken sträng som helst som avgränsare för att dela upp en sträng i en array i VBA .
Det kan vara en mellanslag (" ") , a kommatecken (",") , a semikolon (":") , ett enskilt tecken, en teckensträng eller vad som helst.
⧭ Exempel 1:
Låt oss dela strängen med hjälp av kommatecken som avgränsare.
Kodraden kommer att vara:
Arr = Split(Text, ",")
Den fullständiga VBA-kod kommer att vara:
⧭ VBA-kod:
Sub Split_String() Text = "Vi ansökte om visum för USA, Kanada, Australien och Frankrike." Arr = Split(Text, ",") Output = "" For i = 0 To UBound(Arr) Output = Output + vbNewLine + vbNewLine + Arr(i) Next i MsgBox Output End Sub
⧭ Utgång:
Den delar upp strängen i en matris som består av {"Vi ansökte om visum för USA", " Kanada", " Australien", " Frankrike"}.
⧭ Exempel 2:
Du kan också använda en mellanslag (" ") som avgränsare.
Kodraden kommer att vara:
Arr = Split(Text, " ")
Den fullständiga VBA-kod kommer att vara:
⧭ VBA-kod:
Sub Split_String() Text = "Vi ansökte om visum för USA, Kanada, Australien och Frankrike." Arr = Split(Text, " ") Output = "" For i = 0 To UBound(Arr) Output = Output + vbNewLine + vbNewLine + Arr(i) Next i MsgBox Output End Sub
⧭ Utgång:
Den delar upp strängen i en matris som består av {"Vi", "ansökte", "för", "den", "visum", "av", "USA", "Kanada", "Australien", "Frankrike", "Frankrike" }.
⧭ Saker att komma ihåg:
- Standardavgränsaren är ett mellanslag (" ") .
- Det vill säga, om du inte infogar någon avgränsare kommer den att använda en utrymme som avgränsare.
Läs mer: Dela strängar efter tecken i Excel (6 lämpliga sätt)
Liknande läsningar:
- Dela upp text i flera celler i Excel
- VBA för att hämta unika värden från kolumnen till matrisen i Excel (3 kriterier)
- Excel VBA: Hur man filtrerar med flera kriterier i en matris (7 sätt)
2. Dela en sträng till en array med valfritt antal objekt
Du kan dela upp en sträng i en array med ett valfritt antal objekt enligt dina önskemål.
Lägg in antalet artiklar som 3:e argumentet i den Split-funktion .
⧭ Exempel:
Låt oss dela upp strängen i den första 3 objekt med en utrymme som avgränsare.
Kodraden kommer att vara:
Arr = Split(Text, " ", 3)
Och den VBA-kod kommer att vara:
⧭ VBA-kod:
Sub Split_String() Text = "Vi ansökte om visum för USA, Kanada, Australien och Frankrike." Arr = Split(Text, " ", 3) Output = "" For i = 0 To UBound(Arr) Output = Output + vbNewLine + vbNewLine + Arr(i) Next i MsgBox Output End Sub
⧭ Utgång:
Den delar upp strängen i en matris som består av den första 3 poster separerade med avgränsaren utrymme .
⧭ Saker att komma ihåg:
- Standardargumentet är -1 .
- Det betyder att om du inte anger argumentet kommer den att dela strängen i så många gånger som möjligt.
Läs mer: Hur man delar strängar efter längd i Excel (8 sätt)
3. Använd både skiftlägeskänslig och osensitiv avgränsare för att dela upp en sträng och en matris i VBA
Split-funktion ger dig möjlighet att använda både en Skiftlägeskänslig och Skiftlägeskänslig avgränsare.
För en Skiftlägeskänslig avgränsare, infoga 4:e argumentet som 1.
Och för en Skiftlägeskänslig avgränsare, infoga 4:e argumentet som 0 .
⧭ Exempel 1: Delimiter som tar hänsyn till stor- och småbokstäver
I den givna strängen, låt oss betrakta texten "FÖR" som avgränsare och 2 som det totala antalet poster i matrisen.
För en Skiftlägeskänslig I detta fall kommer kodraden att vara:
Arr = Split(Text, "FOR ", 3,1)
Och den fullständiga VBA-kod kommer att vara:
⧭ VBA-kod:
Sub Split_String() Text = "Vi ansökte om visum för USA, Kanada, Australien och Frankrike." Arr = Split(Text, "FOR", 2, 1) Output = "" For i = 0 To UBound(Arr) Output = Output + vbNewLine + vbNewLine + Arr(i) Next i MsgBox Output End Sub
⧭ Utgång:
Eftersom avgränsaren är Skiftlägeskänslig här, den "FÖR" kommer att fungera som "för" och den delar strängen i en array med två objekt.
⧭ Exempel 2: Skiftlägeskänslig avgränsare
För en Skiftlägeskänslig I detta fall kommer kodraden att vara:
Arr = Split(Text, "FOR ", 3,0)
Och den fullständiga VBA-kod kommer att vara:
⧭ VBA-kod:
Sub Split_String() Text = "Vi ansökte om visum för USA, Kanada, Australien och Frankrike." Arr = Split(Text, "FOR", 2, 0) Output = "" For i = 0 To UBound(Arr) Output = Output + vbNewLine + vbNewLine + Arr(i) Next i MsgBox Output End Sub
⧭ Utgång:
Eftersom avgränsaren är Skiftlägeskänslig här, den "FÖR" inte som "för" och den delar inte upp strängen i en matris med två objekt.
Läs mer: Excel VBA: Ta bort dubbletter från en matris (2 exempel)
⧭ Saker att komma ihåg:
- Standardvärdet för argumentet är 0 .
- Det vill säga, om du inte anger värdet på 4:e argumentet, kommer det att fungera för en Skiftlägeskänslig match.
Slutsats
Med dessa metoder kan du därför använda Split-funktion på VBA för att dela upp en sträng i en matris av objekt. Har du några frågor? Du kan gärna ställa dem till oss.