Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array in Array via Split Funct.=Deklarationsprobl.

Array in Array via Split Funct.=Deklarationsprobl.
Andreas
Hallo Excel Enthusiasten,
ich nage grad an einem Problem betreffend die Split Funktion und deren Ergebnisdarstellung in Arrayform. Die Split Funktion hat mir schon oft viel Freude bereitet, aber heute scheitere ich daran alle Ergebnisse eines zweistufigen Split Verfahrens in einem Array darzustellen. Der erste Split soll auf „/“ erfolgen. Dann wird das Ergebnisarray durchlaufen und alle gesplitteten Einträge werden ihrerseits auf Blank gesplittet und deren Ergebnisarray soll dann an die Position im ersten Array geschrieben werden. Einmal bekomme ich den Fehler, daß ein DatenFeld erwartet wird, das andere Mal, das die Typen unverträglich sind. Die Crux ist m.E. nach das das Split Array als String deklariert sein muß. Ich habe schon überlegt über Hilfsschleifen die Ergebnisse an ein anderes Array zu übergeben, welches nicht als String deklariert ist. Aber es wäre schön, einen direkteren Weg zu finden.
Anbei ein kleiner Beispielcode in der Datei in Modul1:
https://www.herber.de/bbs/user/76675.xls
Ich würde mich freuen, wenn jemand etwas Zeit für eine Lösungsinspiration hat.
Vielen Dank und Gruß, Andreas Hanisch
AW: Array in Array via Split Funct.=Deklarationsprobl.
19.09.2011 16:07:42
Nepumuk
Hallo,
das geht so nicht. Einmal ein String immer ein String. Das würde sonst Kuddelmuddel im Arbeitsspeicher erzeugen.
Gruß
Nepumuk
AW: Array in Array via Split Funct.=Deklarationsprobl.
19.09.2011 16:26:00
Tino
Hallo,
ersetze doch einfach das / durch ein Leerzeichen und splitte diesen String.

Dim arrSplit, strText$, n&
strText = "alpha beta gamma/delta epsilon vau/zeta eta theta"
strText = Replace(strText, "/", " ")
arrSplit = Split(strText, " ")
For n = LBound(arrSplit) To UBound(arrSplit)
Debug.Print arrSplit(n)
Next n
Das was Du vor hast geht so nicht, Du kannst ein Array nicht zwischendrin einfach neu Dimensionieren, wenn müsstest Du schon ein neues Array erstellen und dieses entsprechend groß Dimensionieren und die Daten immer dazuschreiben.

Dim arrSplit, strText$, n&, nn&
Dim NewArray()
strText = "alpha beta gamma/delta epsilon vau/zeta eta theta"

strText = Replace(strText, "/", " ")
arrSplit = Split(strText, " ")

Redim Preserve NewArray(Lbound(arrSplit) To Ubound(arrSplit))
For n = Lbound(arrSplit) To Ubound(arrSplit)
   NewArray(nn) = arrSplit(n)
   nn = nn + 1
Next n


strText = "delta epsilon vau/zeta eta theta alpha beta gamma"

strText = Replace(strText, "/", " ")
arrSplit = Split(strText, " ")

Redim Preserve NewArray(Lbound(NewArray) To nn + Ubound(arrSplit) - Lbound(NewArray))
For n = Lbound(arrSplit) To Ubound(arrSplit)
   NewArray(nn) = arrSplit(n)
   nn = nn + 1
Next n

For n = Lbound(NewArray) To Ubound(NewArray)
   Debug.Print NewArray(n)
Next n
Gruß Tino
Anzeige
AW: Array in Array via Split Funct.=Deklarationsprobl.
19.09.2011 16:35:07
Andreas
Hallo Nepumuk, hallo Tino,
vielen Dank für Eure schnelle Antworten. Ich hatte geahnt, daß es keine Lösung ohne zusätzliche Schleifen gibt, aber nun habe ich die Gewißheit, was auch gut ist. Tinos ersten Vorschlag kann ich nicht nehmen. Ich hatte mich etwas unklar ausgedrückt - ich benötige die gesplitteten Werte schon "gruppenweise". Ich werde die Werte wohl über eine zusätzliche Schleife übergeben lassen.
Vielen Dank Euch beiden für Eure Mühe. Es hat geholfen. Inspiration ist nun da!!!
Grüße aus Berlin, Andreas
AW: Array in Array via Split Funct.=Deklarationsprobl.
19.09.2011 16:42:37
Tino
Hallo,
na dann in etwa so.

Sub ArrayInArraySplit()
Dim arrSplit, varWert, strText$, n&

strText = "alpha beta gamma/delta epsilon vau/zeta eta theta"

arrSplit = Split(strText, "/")

For n = Lbound(arrSplit) To Ubound(arrSplit)
    For Each varWert In Split(arrSplit(n), " ")
        Debug.Print "Gruppe: " & n, "Wert: " & varWert
    Next varWert
Next n

End Sub
Gruß Tino
Anzeige
AW: Array in Array via Split Funct.=Deklarationsprobl.
19.09.2011 16:32:48
Christian
Hallo,
ein Vorschlag:

Option Explicit
Sub ArrayInArraySplit()
Dim i As Integer
Dim ii As Integer
Dim arrSplit As Variant
Dim vntRes() As Variant
Const CstrText As String = "alpha beta gamma/delta epsilon vau/zeta eta theta"
arrSplit = Split(CstrText, "/")
ReDim vntRes(UBound(arrSplit))
For i = 0 To UBound(arrSplit)
vntRes(i) = Split(arrSplit(i))
Next
For i = 0 To UBound(vntRes)
For ii = 0 To UBound(vntRes(i))
Debug.Print i; ii; vntRes(i)(ii)
Next
Next
End Sub

Gruß
Christian
AW: Array in Array via Split Funct.=Deklarationsprobl.
19.09.2011 19:44:46
Andreas
Hi Christian, hallo Tino,
entschuldigt meine späte Antwort. Ich habe die email Replikation lange nicht laufen lassen. Genau so etwas wie in Euren beiden letzten Antworten schwebte mir vor! Total genial und schön knackig kurz. Wow!
Habt Dank und noch einen schönen Abend!
Grüße aus Berlin, Andreas
Anzeige
...Oder so, ...
20.09.2011 02:42:00
Luc:-?
…Andreas:

Sub ArrayInArraySplit()     'Ergebnis listet griech Ziffernnamen untereinander
Const CstrText As String = "alpha beta gamma/delta epsilon vau/zeta eta theta"
Dim i As Integer, j As Integer, arrSplit(), x As Variant
ReDim arrSplit(Len(CstrText) - Len(Replace(CstrText, "/", "")))
For Each x In Split(CstrText, "/")
arrSplit(i) = Split(x)
For j = 0 To Len(x) - Len(Replace(x, " ", ""))
Debug.Print arrSplit(i)(j)
Next j
i = i + 1
Next x
End Sub
Mache ich öfter!
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige