wie kann eine Zeichenkette s="xaxxbxxxcxdx" in ein Datenfeld v=Array(a,b,c,d) umgewandelt werden? "x" ist der Separator und a,b,c,d Variabeln. Im Beispiel soll LBound(v)=0 und UBound(v)=3 sein. Danke im Voraus für eure Hilfe
Gruß, Alifa
Sub Extrahieren()
Dim strS As String
Dim arrDaten
Dim arrZiel()
Dim intZaehler As Integer
Dim intZiel As Integer
strS = "xaxxbxxxcxdx"
arrDaten = Split(strS, "x")
For intZiel = LBound(arrDaten) To UBound(arrDaten)
If arrDaten(intZiel) "" Then
ReDim Preserve arrZiel(0 To intZaehler)
arrZiel(intZaehler) = arrDaten(intZiel)
intZaehler = intZaehler + 1
End If
Next intZiel
End Sub
Option Explicit
Public Sub test()
Dim objRegEx As Object, objMatch As Object
Dim strText As String
Dim lngIndex As Long
strText = "xaxxbxxxcxdx"
Set objRegEx = CreateObject(Class:="vbscript.regexp")
With objRegEx
.Global = True
.IgnoreCase = True
.MultiLine = False
.Pattern = "[^x]"
Set objMatch = .Execute(strText)
End With
For lngIndex = 0 To objMatch.Count - 1
Debug.Print objMatch(lngIndex)
Next
Set objRegEx = Nothing
Set objMatch = Nothing
End Sub
VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel
Code erstellt und getestet in Office 12
Function compSplit(Bezug, Optional ByVal TrennZ)
compSplit = Split(WorksheetFunction.Trim(Join(Split(Bezug, TrennZ))))
End Function
Die anderen, universelleren UDFs sind im Archiv zu finden:Um einen String in ein Array in Excel umzuwandeln, kannst Du die Split
-Funktion in VBA verwenden. Hier ist ein einfaches Beispiel, das zeigt, wie eine Zeichenkette in ein Array umgewandelt wird:
Sub StringInArrayUmwandeln()
Dim strS As String
Dim arrDaten
Dim arrZiel()
Dim intZaehler As Integer
Dim intZiel As Integer
strS = "xaxxbxxxcxdx" ' Die Zeichenkette
arrDaten = Split(strS, "x") ' Splitte den String an den Separator "x"
For intZiel = LBound(arrDaten) To UBound(arrDaten)
If arrDaten(intZiel) <> "" Then
ReDim Preserve arrZiel(0 To intZaehler)
arrZiel(intZaehler) = arrDaten(intZiel)
intZaehler = intZaehler + 1
End If
Next intZiel
End Sub
Dieser Code speichert die Werte in arrZiel
, wobei der Separator "x" verwendet wird. Die ReDim Preserve
-Anweisung sorgt dafür, dass die vorherigen Werte im Array erhalten bleiben.
Fehler: "Index außerhalb des gültigen Bereichs"
Fehler: Das Array ist leer
Split
ein Array mit nur einem Element.Es gibt verschiedene Möglichkeiten, einen String in ein Array umzuwandeln, zum Beispiel mit regulären Ausdrücken. Hier ist ein Beispiel, das zeigt, wie dies mit VBA-RegEx funktioniert:
Sub RegExStringInArray()
Dim objRegEx As Object
Dim objMatch As Object
Dim strText As String
Dim lngIndex As Long
strText = "xaxxbxxxcxdx"
Set objRegEx = CreateObject("vbscript.regexp")
With objRegEx
.Global = True
.IgnoreCase = True
.Pattern = "[^x]"
End With
Set objMatch = objRegEx.Execute(strText)
For lngIndex = 0 To objMatch.Count - 1
Debug.Print objMatch(lngIndex)
Next lngIndex
End Sub
Diese Methode ist besonders nützlich, wenn Du komplexe Trennmuster benötigst.
Du kannst die oben genannten Methoden in verschiedenen Szenarien verwenden. Hier sind einige Beispiele:
Beispiel 1: Umwandeln eines durch Kommas getrennten Strings in ein Array:
Dim arr As Variant
arr = Split("Apfel,Banane,Kirsche", ",")
Beispiel 2: Verwenden von WorksheetFunction
in Excel:
v = Split(WorksheetFunction.Trim(Replace(s, "x", " ")))
ReDim Preserve
-Anweisung sorgfältig, da sie die Performance beeinträchtigen kann, wenn sie häufig verwendet wird.Split
mit anderen Funktionen, um die gewünschte Datenstruktur zu erhalten.1. Wie kann ich einen String in ein Array ohne VBA umwandeln?
In Excel-Formeln kannst Du TEXTSPLIT
(in neueren Versionen) verwenden, um einen String in mehrere Zellen zu splitten.
2. Was ist der Unterschied zwischen Split
und Join
in VBA?
Split
wandelt einen String in ein Array um, während Join
ein Array in einen String zurückverwandelt.
3. Wie kann ich die Array-Elemente anzeigen?
Du kannst eine Schleife verwenden, um die Elemente des Arrays anzuzeigen. Zum Beispiel:
For i = LBound(arrZiel) To UBound(arrZiel)
Debug.Print arrZiel(i)
Next i
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen