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

Forumthread: Text aufteilen bis Komma

Text aufteilen bis Komma
walli
Guten Abend,
ich habe in der Spalte X (24) einen langen Text.
Nun möchte ich in der Spalte Y (25) den Text kopiert haben bis zum Komma.
Immer ab Zeile 4 bis zum Ende, das Ende sool in der Spalte "B" ermittelt werden.
Wenn möglich mit einem Makro ?
mfg walli
Anzeige
Bahnhof
26.08.2010 20:52:22
Ramses
Hallo
Sei mir nicht böse,.... aber ich versteh kein Wort von dem was du da geschrieben hast ?
Kannst du mal eine Datei hochladen damit man sieht was du meinst ?
Gruss Rainer
? Hmm...
26.08.2010 21:10:20
EvilRik
... wahrscheinlich handelt es sich um eine große Zelle mit mehreren Zeilenumbrüchen.
Das Ende in Spalte B macht mir aber auch sorgen :).
Steht in Spalte B eine Zahl, die das Textende darstellen soll?

sub TextWurm()
erstesKomma=instr(1,range("X24"),",")
Textbisdahin=left(range("X24"),erstesKomma-1)
range("Y25")=Textbisdahin
end sub

Sowas in der Art?
Gruß Henrik
Anzeige
AW: ? Hmm...
26.08.2010 21:30:36
walli
Guten Abend Hendrik,
ja so.
kann es leider nicht testen meine batterie geht leer,
mfg walli
Geht doch
27.08.2010 10:09:55
walli
Hallo Hendrik,
klappt ALLES.
Kann man dies noch in Verbindung mit der automatischen Länge verbinden?
Wenn die letzte belegte Zelle in der Spalte B erkannt wird.
mfg walli
!!! Guckst du bitte hier !!!
27.08.2010 10:27:11
EvilRik
Hallo walli,
ich habe dir ein Beispiel hochgeladen.
In diesem Beispiel habe ich noch einmal versucht zu verstehen, was du möchtest.
Ich hoffe, das passt. Ansonsten lade bitte ein Beispiel hoch.
https://www.herber.de/bbs/user/71281.xls
Eigentlich sollten hier alle vorgeschlagenen Lösungen funktionieren.
Die anderen und ich sind sonst mit unserem Latein am Ende.
Gruß Henrik
Anzeige
AW: !!! Guckst du bitte hier !!!
27.08.2010 10:41:04
walli
Hallo Hendrik,
danke für das Beispiel.
Jetzt werden alle kopiert so wie ich es möchte,
allerdings auch wenn kein Komma steht.
Die sollten nicht kopiert werden.
Anbei die Musterdatei.
https://www.herber.de/bbs/user/71282.xls
mfg walter
Anzeige
Tausend Dank !!! alles ok. --))
27.08.2010 14:21:09
walli
Hendrik bitte nochmal prüfen !!!
27.08.2010 10:30:51
walli
Guten Morgen hendrik,
habe nochmals kontr. leider werden einige Texte nicht kopiert, die
in der Spalte allein bis Komma stehen.
z.b. : hhwalter,
leider wird dann nicht in die rechte Spalte kopiert, warum auch immer.
mfg walli
Anzeige
Aber ...
26.08.2010 21:11:32
walli
Guten Abend Rainer,
z.b. Text:
der Text steht in Spalte X angefangen ab Zeile 4
wb_hhhhh,BGFUPB0HATSRM+SCAREW51645
jetzt sollte der Text bis:
wb_hhhhh,
in die Spalte Y ab Zeile4 angefangen kopiert werden.
ist das OK ?
mfg walli
ich heiß zwar Henrik aber egal :) ...
26.08.2010 21:30:18
EvilRik
huhu walli,
wieviele Zeilen beinhalten denn Text? Von Zeile 4 bis z.B. 23?
Generell hat Excel auch die Möglichkeit Text in Spalten aufzuteilen, wobei man den Seperator selbst bestimmen kann. Daten -> Text in Spalten
Funktioniert gut bei Text. Solltest du aber Dezimalzahlen darin haben z.B. wb_hhhhh,235,66,BGFUPB0HATSRM+SCAREW51645 schribt er 235 in eine und 66 in eine andere Spalte.
Ansonsten:
Schreib folgendes in ein neues Modul oder das Modul des entsprechenden Worksheets

Sub Teilmich()
for zae1=4 to 23    ' Die 23 kannst du deiner Zeilenanzahl anpassen
left(cells(zae1,"X"),instr(1,cells(zae1,"X"),",")-1).copy
cells(zae1,"Y").paste
next zae1
end sub

Gruß Henrik
Anzeige
AW: ich heiß zwar Henrik aber egal :) ...
26.08.2010 21:34:50
walli
Hallo Hendrik,
sorry, der Text steht in in jeder Zelle unterschiedlich lang.
Wenn also das Komma kommt soll bis dahin direkt daneben kopiert werden.
mfg walli
AW: angepasste Lösung, Text bis 1. Komma abtrennen
27.08.2010 02:22:28
fcs
Hallo Walli,
so sollte es funktionieren. Ich hab noch die Prüfung von ein paar Sonderfällen eingebaut.
Gruß
Franz
Sub Teilmich()
'Text in Spalte X (24) bis zum 1. Komma ausschneiden und in Spalte Y (25) eintragen
Dim zae1 As Long, sText As String
For zae1 = 4 To 23  ' Die 23 kannst du deiner Zeilenanzahl anpassen
sText = Cells(zae1, 24).Text
'Komma im Text vorhanden
If InStr(1, sText, ",") > 1 Then
Cells(zae1, 25) = Left(sText, InStr(1, sText, ",") - 1)
'Komma an 1. Position
ElseIf InStr(1, sText, ",") = 1 Then
Cells(zae1, 25).ClearContents
Else
'Kein Komma im text
Cells(zae1, 25).ClearContents
'        Cells(zae1, 25)=sText
End If
Next zae1
End Sub

Anzeige
Ja aber
27.08.2010 09:56:46
walli
Guten Morgen Franz,
klappt soweit.
Allerdings habe ich festgestellt, wenn z.b. hhdieter, steht
wird dieser Text nicht kopiert !
mfg walli
Schnell aber auch
27.08.2010 10:01:10
walli
Hallo Hendrik,
läuft GUT u. Schnell aber es werden die Textteile bis zum Komma auch nicht
kopiert, wenn nur der Text:
hhwalter,
in der Zeile steht.
Hier sollte dann auch hhWalter kopiert werden.
mfg walli
Anzeige
Text aufteilen bis Komma - mit VBA
26.08.2010 21:08:09
Erich
Hi Walter,
probier mal

Sub TeilKommaXY()
Dim arrA, arrE() As String, zz As Long
arrA = Cells(4, 24).Resize(Cells(Rows.Count, 2).End(xlUp).Row - 3)
ReDim arrE(1 To UBound(arrA))
For zz = 1 To UBound(arrE)
arrE(zz) = Split(arrA(zz, 1), ",")(0)
Next zz
Cells(4, 25).Resize(UBound(arrE)) = Application.Transpose(arrE)
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Text aufteilen bis Komma - mit VBA - kürzer
26.08.2010 21:11:32
Erich
Hi Walter,
probier auch mal

Sub TeilKommaXYv2()
Dim arrA, zz As Long
arrA = Cells(4, 24).Resize(Cells(Rows.Count, 2).End(xlUp).Row - 3)
For zz = 1 To UBound(arrA)
arrA(zz, 1) = Split(arrA(zz, 1), ",")(0)
Next zz
Cells(4, 25).Resize(UBound(arrA)) = arrA
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Hallo Erich + Hendrik, testen morgen Früh...
26.08.2010 21:37:40
walli
Guten Abend Erich und nochmals Hendrik,
werde direkt morgen Früh testen, erstmal Danke.
mfg walli
Text aufteilen bis incl. Komma - mit VBA
26.08.2010 21:45:06
Erich
Hi Walli,
und so kommt das Komma auch mit:

Sub TeilKommaXYv3()
Dim arrA, zz As Long, strE As String
arrA = Cells(4, 24).Resize(Cells(Rows.Count, 2).End(xlUp).Row - 3)
For zz = 1 To UBound(arrA)
strE = Split(arrA(zz, 1), ",")(0)
arrA(zz, 1) = strE & IIf(strE  arrA(zz, 1), ",", "")
Next zz
Cells(4, 25).Resize(UBound(arrA)) = arrA
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Text aufteilen bis incl. Komma - mit VBA
27.08.2010 09:46:14
walli
Hallo Erich,
bleibt hier stehen:
strE = Split(arrA(zz, 1), ",")(0)
hatte wohl vergessen, es sind nicht immer Kommas vorhanden.
Nur wenn ein Komma da ist soll das 1.Komma im Text genommen werden.
mfg walli
neue Version
27.08.2010 13:41:23
Erich
Hi Walli,
dass das Makro mit einer Fehlermeldung (die du hier angegeben haben solltest!) aussteigt,
liegt nicht daran, dass da kein Komma in einer Zelle steht, sondern daran, dass eine Zelle ganz leer ist.
Inzwischen hast du ja etwas genauer beschrieben, was du eigentlich haben möchtest.
- wenn leer oder kein Komma, nichts
- sonst Text bis vor dem ersten Komma (ohne das Komma selbst - dein Beispiel sah anders aus...)
Probier mal:

Sub Teilmich2()
Dim arrA, zz As Long, strE As String
arrA = Cells(4, 24).Resize(Cells(Rows.Count, 2).End(xlUp).Row - 3)
For zz = 1 To UBound(arrA)
If Len(arrA(zz, 1)) > 0 Then
strE = Split(arrA(zz, 1), ",")(0)
arrA(zz, 1) = IIf(strE = arrA(zz, 1), "", strE)
End If
Next zz
Cells(4, 25).Resize(UBound(arrA)) = arrA
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
...siehe 10:52 von mir...
27.08.2010 14:04:09
mir...
...
ich glaube wir sollten die Bemühungen einstellen.
Das Problem schein gelöst, leider keine Rückmeldung :(
Gruß Henrik
Doch doch, musste nur Firma etc. -)
27.08.2010 14:26:52
walli
Hallo Henrik,
wie vorhin beschrieben, nochmals DANKE.
Schönes Wochenende
mfg walli
AW: neue Version Funktioniert --))
27.08.2010 14:25:27
walli
Hallo Erich,
bin gerade rein.
Auch deins läuft einwandfrei.
DANKE !!!
mfg walli
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Text aufteilen bis Komma in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade deine Datei, die den Text enthält, den du bis zum Komma aufteilen möchtest.

  2. Wähle die Zelle in Spalte Y, ab Zeile 4, wo der Text bis zum Komma eingefügt werden soll.

  3. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  4. Füge ein neues Modul hinzu:

    • Rechtsklick auf „VBAProject (dein Dokument)“ > Einfügen > Modul.
  5. Kopiere und füge folgenden Code ein:

    Sub Teilmich()
       Dim zae1 As Long
       For zae1 = 4 To Cells(Rows.Count, 24).End(xlUp).Row
           If InStr(1, Cells(zae1, 24), ",") > 0 Then
               Cells(zae1, 25) = Left(Cells(zae1, 24), InStr(1, Cells(zae1, 24), ",") - 1)
           Else
               Cells(zae1, 25).ClearContents
           End If
       Next zae1
    End Sub
  6. Schließe den VBA-Editor und gehe zurück zu Excel.

  7. Führe das Makro aus:

    • Drücke ALT + F8, wähle „TeilMICH“ aus und klicke auf „Ausführen“.

Damit werden die Texte in Spalte X bis zum ersten Komma in Spalte Y kopiert.


Häufige Fehler und Lösungen

  • Kein Komma in der Zelle: Wenn der Text kein Komma enthält, wird die Zelle in Spalte Y leer gelassen. Stelle sicher, dass alle relevanten Zellen ein Komma enthalten, oder passe den Code an, um einen Standardwert zu setzen.

  • Leere Zellen: Wenn eine Zelle leer ist, zeigt Excel keine Fehlermeldung, sondern bleibt ebenfalls leer. Um das Verhalten zu ändern, kannst du den Code so anpassen, dass leere Zellen nach einem bestimmten Muster behandelt werden.

  • Datenformat: Überprüfe, dass die Daten in Spalte X im Textformat vorliegen. Excel kann manchmal Zahlen als solche interpretieren und nicht als Text.


Alternative Methoden

  1. Daten > Text in Spalten:

    • Markiere die Daten in Spalte X, gehe zu „Daten“ und wähle „Text in Spalten“. Wähle den Trennzeichen „Komma“ aus. Dies ist eine manuelle Methode, um Text in Spalten aufzuteilen.
  2. Formelansatz:

    • Du kannst auch eine Formel verwenden, um den Text bis zum Komma zu extrahieren. Verwende in Zelle Y4 die folgende Formel:
      =WENNFEHLER(LINKS(X4;FINDEN(",";X4)-1);"")

Praktische Beispiele

  • Angenommen, in Zelle X4 steht der Text „Hallo, Welt“. Nach Ausführung des Makros oder der Formel wird in Zelle Y4 „Hallo“ angezeigt.
  • Wenn in Zelle X5 der Text „Excel, ist, toll“ steht, wird in Zelle Y5 nur „Excel“ kopiert.

Tipps für Profis

  • Makros optimieren: Du kannst den Code so erweitern, dass er auch auf andere Spalten oder Bereiche angewendet wird, indem du Variablen für die Spaltennummern einführst.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im Code, um unerwartete Eingaben oder leere Zellen besser zu handhaben.
  • Automatisierung: Binde das Makro in ein Ereignis ein, um es automatisch auszuführen, wenn Änderungen in der Spalte X vorgenommen werden.

FAQ: Häufige Fragen

1. Wie funktioniert das Makro genau? Das Makro sucht in jeder Zelle der Spalte X nach dem ersten Komma und kopiert den Text davor in die entsprechende Zelle in Spalte Y.

2. Was passiert, wenn kein Komma vorhanden ist? Wenn kein Komma vorhanden ist, wird die Zielzelle in Spalte Y geleert.

3. Kann ich das Makro auch für andere Spalten verwenden? Ja, du kannst die Spaltennummern im Code anpassen, um das Makro für andere Spalten anzuwenden.

4. Wie kann ich das Makro speichern, sodass es immer verfügbar ist? Speichere deine Excel-Datei als „Excel-Makro-fähige Arbeitsmappe“ (*.xlsm), um das Makro zu behalten.

5. Ist es möglich, das Komma mit in den Text zu kopieren? Ja, du kannst den Code so anpassen, dass er das Komma mit einbezieht. Ändere die Zeile im Code, die den Text kopiert, entsprechend ab.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige