Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Auslesen String und Ausgabe im neuen Tabellenblatt

Forumthread: Auslesen String und Ausgabe im neuen Tabellenblatt

Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 10:17:05
Bepprich
Hallo liebes Forum,

leider stehe ich derzeit aufm Schlauch. Ich habe in einer Spalte mehrere Zeilen untereinander, wo ich aus einer Zeichenkette einzelnen Frangmente auslesen möchte, die durch ein Komma getrennt sind. Den letzten Teil der Zeichenkette möchte ich nicht weiter bearbeiten, sondern nur bis zum letzten Komma:

Muster in der jeweiligen Zeile: "ABC12, ABB43, AG44, irgendein Text"

Für diesen Fall möchte ich nur einzeln bis zum letzten Komma die Zeichenkette aufsplitten, so dass folgende "Fragmente" entstehen:

ABC12
ABB43
AG44

Diese "Fragmente" möchte ich dann in einer Spalte eines neuen Tabellenblatt ausgeben lassen.

Die Zeichenkette ist auch unterschiedlich lang. Das heißt, von 1 bis 9 "Fragmente".

Das Ganze bezieht sich nicht nur auf eine Zeile, sondern auf mehrere.

Ich habe mir was überlegt und festgestellt, dass im Direktfenster alle Fragmente, die ich mir wünsche, erscheinen. Allerdings klappt die Ausgabe im neuen Tabellenblatt nicht, da werden viel weniger "Fragmente" ausgegeben. Vermutlich wird irgendwas ersetzt/überschrieben.

Für Tipps und Anregungen bin ich sehr dankbar.

Anbei der Code:

Sub SplitCommaSeparatedString()

Dim myString As String
Dim myArray() As String
Dim i As Integer
Dim j As Integer
Dim zeile As Long, spalte As Long

zeile = 2 'Beispiel: mit Zeile 2 beginnend

spalte = 11 'Beispiel: Spalte 11

For j = 1 To 19
zeile = j + 1
'Den Wert der Zelle auslesen
myString = Cells(zeile, spalte).Value

'Leerzeichen rauslöschen
myString = Replace(myString, " ", "")

'Den String mit Komma als Trennzeichen aufteilen
myArray = Split(myString, ",")

'Ausgabe des Arrays in das Direktfenster (Optional)
For i = LBound(myArray) To UBound(myArray) - 1 'das letzte Arrayelement nicht nehmen
Debug.Print myArray(i)
'Debug.Print "Zeile vor Ausgabe = " & zeile
Worksheets("Tabelle2").Cells(zeile, 10).Value = myArray(i)
zeile = zeile + 1
'Debug.Print myArray(i)
'Debug.Print "Zeile nach Ausgabe = " & zeile

Next i



Next j


End Sub
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 11:16:47
MCO
Hallo Sigi!

So einfach kann das Split sein...
Fehlt jetzt nur noch, dass die passende Anzahl Parameter alle untereinandergeschrieben werden.
Kriegst du das auch so einfach hin?

Gruß, MCO
Anzeige
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 11:13:38
MCO
Moin!

Ist doch schon gar nicht schlecht!

Ich hab den Code etwas angepasst, aber die Logik stimmte nach meiner Meinung...

*Statt jede Zeile einzeln durchzugehen hab ich den Bereich auf alle Konstanten in benannter Spalte vorgegeben (specialcells)
Damit entfällt J
*Leerzeichen rauslöschen kommt später mit TRIM (für führende u. folgende Leerzeichen)
Damit entfällt "mystring"

Der fertige code sieht dann so aus:
Sub SplitCommaSeparatedString()


Dim myArray() As String
Dim i As Integer
Dim zeile As Long, spalte As Long

zeile = 2 'Beispiel: mit Zeile 2 beginnend
spalte = 1 'Beispiel: Spalte 11

For Each cl In Range(Cells(1, spalte), Cells(Rows.Count, spalte)).SpecialCells(xlCellTypeConstants)
'Den String mit Komma als Trennzeichen aufteilen
myArray = Split(cl.Value, ",")

'Ausgabe des Arrays in das Direktfenster (Optional)
For i = LBound(myArray) To UBound(myArray) - 1 'das letzte Arrayelement nicht nehmen
Worksheets("Tabelle2").Cells(zeile, 10).Value = Trim(myArray(i)) 'Leerzeichen rauslöschen
zeile = zeile + 1
Next i
Next cl
End Sub
Anzeige
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 11:20:36
Kuwer
Hallo Bepprich,

lass bei
  For i = LBound(myArray) To UBound(myArray) - 1 'das letzte Arrayelement nicht nehmen

das - 1 weg. ;-)

Gruß, Uwe
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 14:58:28
daniel
Hi

wenn du " " durch "," ersetzt, hast du dort wo jemand ", " schreibt (Komma + Leer) dann zwei Kommas.
Wenn du dann mit Komma splittest, entsteht an dieser Stelle ein leerer Array- Eintrag, denn das SPLIT kennt kein "Doppelte Trennzeichen ignorieren" wie das Text in Spalten"
Array(0) = "ABC12"
Array(1) = ""
Array(2) = "ABB43"
Array(3) = ""

als Alternative könntest du auch im Replace ", " duch "," ersetzen.

Gruß Daniel
Anzeige
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 15:31:53
RPP63
In diesem Forum gibst Du ja die Version an, im VBA-Forum nicht ...
Umso mehr gilt meine dortige Empfehlung:
Nutze Weglassen und Textteilen.
VBA ist für so etwas nicht (mehr) nötig.

Gruß Ralf
Im Anhang ist...
05.08.2025 10:33:35
Case
Moin, :-)

... eine Möglichkeit per Power Query: ;-)
https://www.herber.de/bbs/user/178449.xlsx

Damit könntest du auf VBA verzichten. Je nachdem, wo die die Daten herkommen, kann man auch früher ansetzen - also z. B. beim Import. ;-)

Servus
Case
Anzeige
Noch etwas...
05.08.2025 10:54:39
Case
Moin, :-)

... angepasst: ;-)
let

Quelle = Excel.CurrentWorkbook(){[Name="tblDaten"]}[Content],
Teilen = Table.TransformColumns(Table.AddColumn(Quelle, "Geteilt", each Text.BeforeDelimiter([Daten], ",", {0, RelativePosition.FromEnd})), {{"Geteilt", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv)}}),
Erg = Table.SelectColumns(Table.ExpandListColumn(Teilen, "Geteilt"), {"Geteilt"})
in
Erg

Servus
Case
Anzeige
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 15:57:38
BoskoBiati
Hi Ralf,

und wie kann man das auf viele Zeilen ausdehnen, ohne die Formel ziehen zu müssen? Meine Versuche mit Lambda sind kläglich gescheitert.
Innerhalb der Limits von Excel bzgl. Stringlänge ginge das:

=LET(xa;A1:A7;xb;TEXTVERKETTEN("#";1;xa);WEGLASSEN(TEXTTEILEN(xb;",";"#");;-1))


Gruß

Edgar
Anzeige
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 18:58:09
BoskoBiati
Hi,

gefunden, maninweb hatte das mal gepostet. Ich habe es auf unterschiedlich lange Zeichenketten angepasst :

=WEGLASSEN(REDUCE("";$A$1:$A$9;LAMBDA(A;V;WENNFEHLER(VSTAPELN(A;WEGLASSEN(TEXTTEILEN(V;",");;-1));"")));1)


Gruß

Edgar
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
04.08.2025 20:56:02
Luschi
Hallo Edgar,

gibt es im Auswahlbereich A1:A9 eine oder mehrere leere Zellen, dann muß man die Formel so erweitern:
=WEGLASSEN(REDUCE("";$A$1:$A$9;LAMBDA(A;V;WENNFEHLER(VSTAPELN(A;WENNFEHLER(WEGLASSEN(TEXTTEILEN(V;",");;-1);""));"")));1)


Gruß von Luschi
aus klein-Paris
Anzeige
AW: Auslesen String und Ausgabe im neuen Tabellenblatt
05.08.2025 09:28:12
BoskoBiati
Hallo Luschi,

guter Einwand, gute Ergänzung. Danke.

Gruß

Edgar

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige