Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
764to768
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
764to768
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Trennen nach Zeichenlänge

Trennen nach Zeichenlänge
16.05.2006 09:50:21
StingerMKO
Hallo,
ich habe in Spalte A Kundennamen, die z.T. bis zu 60 Zeichen in haben.
Für ein Anschreiben möchte ich den Kundennamen trennen, so dass er auf 2 Spalten verteilt wird. Jetzt habe ich diese Formel über die Suchfunktion im Forum gefunden:
=TEIL($A$1;(SPALTE()-3)*40+1;40)
Hier trennt die Formel aber genau nach 30 Zeichen, d.h. auch mitten im Wort.
Ich möchte, dass zwischen 2 Wörtern getrennt wird.
Im Detail: Er soll prüfen, ob das 41. Zeichen ein Leerzeichen ist, wenn ja, kann er da trennen, wenn nicht soll er schon vor dem aktuellen Wort (das das 40./41. Zeichen enthält)trennen.
Geht das?
Vielen Dank im Voraus!
Gruß,
Malte

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trennen nach Zeichenlänge
16.05.2006 09:57:04
Mag
Hi,
A1: Text
B1: =TEIL(A1;1;FINDEN(" ";A1)-1)
C1: =TEIL(A1;FINDEN(" ";A1)+1;99)
Gruss
AW: Trennen nach Zeichenlänge
16.05.2006 10:07:24
StingerMKO
Hi Mag!
Sieht schon mal gut aus, nur hier gibt es folgendes Problem:
Beispiel Text: Firma Meier Müller Schulze Dienstleistungen GmbH & Co KG
Bei deiner Formel trennt er schon nach "Firma", d.h. er sucht das erste Leerzeichen.
Ich möchte aber, dass er das 40 Zeichen prüft Leerzeichen ja/nein?
Wenn ja, trenne beim 40. Zeichen, wenn nicht suche das erste Leerzeichen vor dem 40. Zeichen und trenne da.
In diesem Fall ist das 40. Zeichen im Wort "Dienstleistungen", hier soll die Trennung zwischen "Schulze" und "Dienstleistungen" passieren.
Hier also in Spalte B: "Firma Meier Müller Schulze"
UNd in Spalte C: "Dienstleistungen GmbH & Co KG"
Gruß,
Malte
Anzeige
AW: Trennen nach Zeichenlänge
16.05.2006 10:39:39
Mag
Hi,
die Tabellenfunktionen FINDEN oder SUCHEN suchen von links nach rechts. Schreibe Dir eine eigene Funktion und setze sie in ein Modul:
Option Explicit
Public

Function Stelle(Rng As Range) As Integer
Dim i As Integer
i = 40
While i > 0 And Mid(Rng.Text, i, 1) <> " "
i = i - 1
Wend
Stelle = i
End Function

dann in B1:
=TEIL(A1;1;Stelle(A1)-1)
und in C1:
=TEIL(A1;Stelle(A1)+1;99)
Gruss
AW: Trennen nach Zeichenlänge
16.05.2006 10:25:51
bst
Morgen Malte,
via Formel: http://excelformeln.de/formeln.html?welcher=383
via UDF:
 
 ABC
1Firma Meier Müller Schulze Dienstleistungen GmbH & Co KGFirma Meier Müller SchulzeDienstleistungen GmbH & Co KG
2  Dienstleistungen GmbH & Co KG
3 26 
Formeln der Tabelle
B1 : =strRegExFind(A1;"^(.{1,30}) ")
C1 : =strRegExFind(A1;"^.{1,30} (.*)$")
C2 : =TEIL(A1;LÄNGE(B1)+2;LÄNGE(A1))
B3 : =LÄNGE(B1)
 

sowie in ein Modul:
Option Explicit

' Suchen in einer Zelle mit Regular Expressions
' Parameter:
' src Der String in dem gesucht werden soll
' SearchPattern Das zu suchenende Pattern
' IgnoreCase Flag, Groß- / Kleinschreibung ignorieren
' MultiLine Flag ob ^ und $ in jeder Zeile matchen
' Rückgabewert:
' den 1.ten SubMatch (das Geklammerte) bzw. den Match bzw. ""
'
Public Function strRegexFind(src As String, SearchPattern As String, _
        Optional IgnoreCase As Boolean = False, _
        Optional MultiLine As Boolean) As String

    
    Dim re As Object ' Ein Regular Expression Objekt
    Dim mc As Object ' Eine MatchCollection
    Dim ret As String ' Der Rückgabewert
    
    ret = ""
    Set re = CreateObject("vbscript.regexp")
    re.Pattern = SearchPattern ' der/die/das Pattern
    re.IgnoreCase = IgnoreCase ' Groß-/Kleinschreibung ignorieren
    re.MultiLine = MultiLine ' ^ und $ matchen auf jeder Zeile
    re.Global = False ' es wird ja nur EIN Ergebnis geliefert !!!
    
    Set mc = re.Execute(src) ' RegEx ausführen
    If mc.Count > 0 Then ' mc.count = Anzahl der Matches
        If mc(0).SubMatches.Count > 0 Then ' mc(0).SubMatches.Count = Anzahl der SubMatches
            ret = mc(0).SubMatches(0) ' der 1. SubMatch
        Else
            ret = mc(0) ' der 1. Match
        End If
    End If
    strRegexFind = ret
    Set mc = Nothing
    Set re = Nothing
End Function



cu, Bernd
Anzeige
AW: Trennen nach Zeichenlänge
16.05.2006 10:49:07
StingerMKO
Hi Bernd!
Das ist ja super umfangreich und gleich mit mehreren Varianten.
Vielen Dank!
Ich habe mich für die Function entschieden, klappt super.
Das Formelbeispiel ist ein bisschen anders, als mein Ansatz und würde leider
zu lange dauern, die Formeln an meine Liste anzupassen.
Gruß,
Malte
AW: Trennen nach Zeichenlänge
16.05.2006 10:48:40
UweD
Hallo
so?
 
 A
13Firma Meier Müller Schulze Dienstleistungen GmbH & Co KG
14 
15Firma Meier Müller Schulze
16Dienstleistungen GmbH & Co KG
Formeln der Tabelle
A15 : =LINKS(A13;SUCHEN("#";WECHSELN(A13;" ";"#";LÄNGE(LINKS(A13;40))-LÄNGE(WECHSELN(LINKS(A13;40);" ";""))))-1)
A16 : =RECHTS(A13;LÄNGE(A13)-LÄNGE(A15)-1)
 

Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Trennen nach Zeichenlänge
17.05.2006 10:02:11
StingerMKO
Hallo Uwe!
auch eine super Lösung mit Formeln!
Danke!
Gruß,
Malte

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige