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

Forumthread: Zellen trennen nach X Zeichen an Leerzeichen

Zellen trennen nach X Zeichen an Leerzeichen
Guido
Ich möchte eine Zelle (100 Zeichen) mit Text in 2 Zellen a 50 Zeichen splitten, Trennung muss jedoch an einem Leerzeichen sein. Jemand da eine Idee?
Anzeige
Hi,oder Hallo..Problem..Gruß ok?
27.07.2009 15:52:47
robert
hi,
entweder 50-50
oder wenn leerzeichen-wann?
gruß
robert
AW: Hi,oder Hallo..Problem..Gruß ok?
27.07.2009 16:14:22
Guido
Trennung am letzten Leerzeichen vor Erreichung der 50 Zeichen (falls kein Leerzeichen vorhanden Trennung bei genau 50 Z.).
Also, aus:
Zelle1:Staubsauger Elektrofluxx ZR50 1200 Watt für Allergiker, Gehäusefarbe schwarz
wird
Zelle2:Staubsauger Elektrofluxx ZR50 1200 Watt für
Zelle3:Allergiker, Gehäusefarbe schwarz
Anzeige
AW: Hi,oder Hallo..Problem..Gruß ok?
27.07.2009 16:20:25
Guido
korrekt meine ich natürlich Zelle A und Zelle B und C, also nebeneinander (spalten splitten);-)
AW: Zellen trennen nach X Zeichen an Leerzeichen
27.07.2009 16:17:25
Guido
(Fast) perfekt, macht das richtige, aber leider habe ich Tabellen mit mehreren tausend Zeilen, die nachträglich gesplittet werden müssen. Bei Deinem Tool geht es nur unmittelbar bei der Eingabe, und dann untereinander (zeilensplit) statt nebeneinander (spaltensplit). Schaut sonst gut aus!
AW: Zellen trennen nach X Zeichen an Leerzeichen
27.07.2009 16:26:45
Hajo_Zi
Hallo Guido,
siehe es Dir komplett an. Es wird auch in Spalten aufgeteilt. Das Makro muss nur an Deine Bedingungen angepast werden. Also eine Schleife über Deinen Bereich.
Gruß Hajo
Anzeige
AW: Zellen trennen nach X Zeichen an Leerzeichen
27.07.2009 16:39:28
Rudi
Hallo,
1.
Beitrag-Funktion
Zeigt einen Hinweis darauf, dass ein Forum-Teilnehmer eine Frage hat, eine Antwort geben möchte, eine allgemeine Bemerkung geben möchte.
Syntax
Beitrag begrüßungsformel,
[ Name ], Text, Schlussformel,
Die Syntax der Beitrag-Funktion verwendet die folgenden Argumente:
Teil Beschreibung
begrüßungsformel Erforderlich. Ein Zeichenfolgenausdruck, der den landesüblichen Geflogenheiten entspricht.
Eine Auswahl möglicher Werte kann der folgenden Zeile entnommen werden.
"Hallo", "Hi", "Guten Tag"
Auch die Verwendung von umgangssprachlichen Angaben, wie z Bsp "Moin" oder "Tach" ist möglich.
name Optional. Ein Zeichenfolgenausdruck, der mit Hilfe des Argumentes
begrüßungsformel die gewünschte Zielgruppe einschränkt.
text Erforderlich. Ein Zeichenfolgenausdruck, der Auskunft über das eigentliche Anliegen des Fragenden gibt.
Der Inhalt ist frei wählbar, sollte jedoch freundlich und qualifiziert gestaltet werden.
schlussformel Erforderlich. Ein Zeichenfolgenausdruck, der den landesüblichen Geflogenheiten entspricht.
Eine Auswahl möglicher Werte kann der folgenden Zeile entnommen werden.
"Ciao", "Gruß", "viele Grüße", "Tschüss"
Auch hier ist die Verwendung von umgangssprachlichen Angaben, wie z Bsp "und wech..." möglich.
Zusätzlich möglich ist es, dass schlussformel den eigenen Namen und/oder den Wert aus name enthält.

Vielleicht versteht auch der Ersteller dieses Threads jetzt, dass ein Beitrag ohne Begrüßungs- und Schlussformel nicht wirklich vollständig ist.
2.
Sub splitten()
Dim sTmp As String, i As Long
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
sTmp = Left(Cells(i, 1), 50)
If InStr(sTmp, " ") > 0 Then
sTmp = Left(sTmp, InStrRev(sTmp, " "))
End If
Cells(i, 2) = Trim(sTmp)
Cells(i, 3) = Trim(Mid(Cells(i, 1), Len(sTmp) + 1, 255))
Next
Application.ScreenUpdating = True
End Sub

Gruß
Rudi
Anzeige
AW: Zellen trennen nach X Zeichen an Leerzeichen
27.07.2009 18:57:02
Guido
hallo rudi,
läuft perfekt, genauso hatte ich es mir gedacht!
gruß guido
Trennung bei Leerzeichen (max 50 Zeichen)
27.07.2009 16:43:34
NoNet
Hallo Grussloser User,
das kann man mit folgenden MATRIX-Funktionen lösen :
ABC
1
2
3
4
5
6

MATRIX-Funktionen (mit Strg+Shift+ENTER bestätigen)
ZelleFormel
B1   {=WENN(UND(LÄNGE(A1)>0;LÄNGE(A1)<50);A1;WENN(ISTFEHLER(FINDEN(" ";LINKS(A1;50)));LINKS(A1;50);LINKS(A1;MAX(WENN(TEIL(A1;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))))
B2   {=WENN(UND(LÄNGE(A2)>0;LÄNGE(A2)<50);A2;WENN(ISTFEHLER(FINDEN(" ";LINKS(A2;50)));LINKS(A2;50);LINKS(A2;MAX(WENN(TEIL(A2;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))))
B3   {=WENN(UND(LÄNGE(A3)>0;LÄNGE(A3)<50);A3;WENN(ISTFEHLER(FINDEN(" ";LINKS(A3;50)));LINKS(A3;50);LINKS(A3;MAX(WENN(TEIL(A3;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))))
B4   {=WENN(UND(LÄNGE(A4)>0;LÄNGE(A4)<50);A4;WENN(ISTFEHLER(FINDEN(" ";LINKS(A4;50)));LINKS(A4;50);LINKS(A4;MAX(WENN(TEIL(A4;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))))
B5   {=WENN(UND(LÄNGE(A5)>0;LÄNGE(A5)<50);A5;WENN(ISTFEHLER(FINDEN(" ";LINKS(A5;50)));LINKS(A5;50);LINKS(A5;MAX(WENN(TEIL(A5;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))))
B6   {=WENN(UND(LÄNGE(A6)>0;LÄNGE(A6)<50);A6;WENN(ISTFEHLER(FINDEN(" ";LINKS(A6;50)));LINKS(A6;50);LINKS(A6;MAX(WENN(TEIL(A6;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))))
C1   {=WENN(LÄNGE(A1)<51;"";WENN(ISTFEHLER(FINDEN(" ";LINKS(A1;50)));TEIL(A1;51;100);TEIL(A1;MAX(WENN(TEIL(A1;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))+1;100))
C2   {=WENN(LÄNGE(A2)<51;"";WENN(ISTFEHLER(FINDEN(" ";LINKS(A2;50)));TEIL(A2;51;100);TEIL(A2;MAX(WENN(TEIL(A2;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))+1;100))
C3   {=WENN(LÄNGE(A3)<51;"";WENN(ISTFEHLER(FINDEN(" ";LINKS(A3;50)));TEIL(A3;51;100);TEIL(A3;MAX(WENN(TEIL(A3;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))+1;100))
C4   {=WENN(LÄNGE(A4)<51;"";WENN(ISTFEHLER(FINDEN(" ";LINKS(A4;50)));TEIL(A4;51;100);TEIL(A4;MAX(WENN(TEIL(A4;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))+1;100))
C5   {=WENN(LÄNGE(A5)<51;"";WENN(ISTFEHLER(FINDEN(" ";LINKS(A5;50)));TEIL(A5;51;100);TEIL(A5;MAX(WENN(TEIL(A5;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))+1;100))
C6   {=WENN(LÄNGE(A6)<51;"";WENN(ISTFEHLER(FINDEN(" ";LINKS(A6;50)));TEIL(A6;51;100);TEIL(A6;MAX(WENN(TEIL(A6;ZEILE($1:$50);1)=" ";ZEILE($1:$50)))+1;100))

Funktionen in Spalte B:C ohne Matrixklammern { } eingeben, dafür jedoch mit Strg+Shift+ENTER bestätigen !
Salut, NoNet
Anzeige
AW: Trennung bei Leerzeichen (max 50 Zeichen)
27.07.2009 19:03:15
Guido
thx noNet,
funzt auch prima!
gruß guido

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen trennen nach X Zeichen an Leerzeichen


Schritt-für-Schritt-Anleitung

Um Zellen in Excel nach einer bestimmten Anzahl von Zeichen an einem Leerzeichen zu trennen, kannst du eine einfache VBA-Makro-Lösung verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub splitten()
       Dim sTmp As String, i As Long
       Application.ScreenUpdating = False
       For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
           sTmp = Left(Cells(i, 1), 50)
           If InStr(sTmp, " ") > 0 Then
               sTmp = Left(sTmp, InStrRev(sTmp, " "))
           End If
           Cells(i, 2) = Trim(sTmp)
           Cells(i, 3) = Trim(Mid(Cells(i, 1), Len(sTmp) + 1, 255))
       Next
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Dieses Makro trennt den Text in der ersten Spalte bei 50 Zeichen und sucht das letzte Leerzeichen, um sicherzustellen, dass die Trennung sinnvoll geschieht.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung"

    • Lösung: Überprüfe, ob du den richtigen Datentyp in den Zellen verwendest. Der Code funktioniert nur mit Text.
  • Fehler: Zellen bleiben leer

    • Lösung: Stelle sicher, dass in der ersten Spalte Text vorhanden ist und das Makro auf die richtige Zelle zugreift.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, gibt es auch Formeln, die du verwenden kannst. Hier ist eine Methode, um Text nach Leerzeichen zu trennen:

  1. Verwende die folgende Formel für die erste Zelle (B1):

    =WENN(UND(LÄNGE(A1) > 0; LÄNGE(A1) < 50); A1; WENN(ISTFEHLER(FINDEN(" ";LINKS(A1;50)));LINKS(A1;50);LINKS(A1;MAX(WENN(TEIL(A1;ZEILE($1:$50);1)=" ";ZEILE($1:$50))))))
  2. Für die zweite Zelle (C1):

    =WENN(LÄNGE(A1) < 51; ""; WENN(ISTFEHLER(FINDEN(" ";LINKS(A1;50)));TEIL(A1;51;100);TEIL(A1;MAX(WENN(TEIL(A1;ZEILE($1:$50);1)=" ";ZEILE($1:$50))) + 1;100)))

Stelle sicher, dass du die Formeln mit Strg + Shift + ENTER bestätigst, um sie als Matrixformeln einzufügen.


Praktische Beispiele

Angenommen, du hast in Zelle A1 den Text:

"Staubsauger Elektrofluxx ZR50 1200 Watt für Allergiker, Gehäusefarbe schwarz"

Nach Ausführung des Makros oder der Formeln erhältst du in den Zellen B1 und C1:

  • B1: "Staubsauger Elektrofluxx ZR50 1200 Watt für"
  • C1: "Allergiker, Gehäusefarbe schwarz"

Tipps für Profis

  • Verwende Platzhalter: Wenn der Text in deiner Zelle variieren kann, füge Platzhalter in den Formeln hinzu, um die Flexibilität zu erhöhen.
  • Automatisierung: Erstelle eine Schaltfläche auf deinem Arbeitsblatt, um das Makro mit einem Klick auszuführen.
  • Datenüberprüfung: Stelle sicher, dass du deine Daten vor der Anwendung von Formeln oder Makros überprüfst, um unerwartete Ergebnisse zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Makro nur auf bestimmte Zellen angewendet wird? Du kannst die Schleife im Makro anpassen, um nur den gewünschten Zellbereich zu durchlaufen.

2. Was passiert, wenn kein Leerzeichen in den ersten 50 Zeichen vorhanden ist? In diesem Fall wird der Text nach genau 50 Zeichen getrennt.

3. Ist es möglich, das Skript so zu ändern, dass es mehr als zwei Zellen erstellt? Ja, du kannst das Makro erweitern, um mehrere Spalten zu füllen, indem du weitere Zellen in der Schleife hinzufügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige