Text trennen bei unterschiedlicher Anzahl Wörtern

Hallo Excelspezis,

ich habe eine Ausstellerliste im pdf-Format in folgender Gliederung:
Firma Stadt Land Web Halle Stand

Über die Funktion „Text in Spalten“ kann ich ja die Leerzeichen als Spaltengrenze definieren. Jedoch gibt es Firmen mit drei getrennten Wörtern als Firmennamen und Firmen mit nur einem Wort.

Habt Ihr für mich einen schnelle Lösungsvorschlag? Geht es z. B. dass ich von hinten trennen lasse??

Vielen Dank schon im Voraus!
Jens

Über die Funktion „Text in Spalten“ kann ich ja die
Leerzeichen als Spaltengrenze definieren.

Prüfe doch erst mal, ob es nicht Tabulatoren sind, die dazwischen liegen - damit könntest Du dann ggf auch direkt in Excel oder über den Umweg von Notepad die Daten reinholen…

Jedoch gibt es
Firmen mit drei getrennten Wörtern als Firmennamen und Firmen
mit nur einem Wort.
Habt Ihr für mich einen schnelle Lösungsvorschlag? Geht es z.
B. dass ich von hinten trennen lasse??

Von hinten Trennen würde nichts bringen, denn es gibt auch Städte mit 2 Wörtern z.B. Bad Tölz, Baden Baden, Haag an der Amper, Frankfurt am Main etc…
Ich vermute also, dass Du um eine manuelle nachkorrektur nicht herumkommen wirst…

Grüße
Munich

Hallo Jens,

ich habe eine Ausstellerliste im pdf-Format in folgender
Gliederung:
Firma Stadt Land Web Halle Stand

mir ist neu daß Excel PDFs schreiben oder auslesen könnte.
WElche Excelversion hast du denn?

Über die Funktion „Text in Spalten“ kann ich ja die
Leerzeichen als Spaltengrenze definieren. Jedoch gibt es
Firmen mit drei getrennten Wörtern als Firmennamen und Firmen
mit nur einem Wort.
Habt Ihr für mich einen schnelle Lösungsvorschlag? Geht es z.
B. dass ich von hinten trennen lasse??

Wenn nur in der Saplte Firma sowas vorkommt, und es immer 6-8 Einträge pro Zeile gibt müßte das sowohl mit Vba aber auch reinen Excelformeln lösbar sein.
Excelformeln wären aufwendiger.

Gruß
Reinhard

Hallo Zusammen,

danke für die Antworten.

Also, ich benutze Excel 2003 (SP3). Es befinden sich keine Tabulatoren dazwischen sondern Leerzeichen.
Ich habe mich vielleicht missverständlich ausgedrückt: Die Originaldatei ist im PDF Format die ich mir über copy&paste ins Excel hole.

@Munich: Dein Einwand mit den Städten stimmt natürlich, da hab ich nicht für 3 Cent weiter gedacht.

@Reinhardt, wie würde denn das ganze in VBA bzw. Excelformeln aussehen??

Ich will unbedingt um die manuelle Bearbeitung rumkommen, es handelt sich um über 1000 Datensätze.

Freue mich über Lösungsvorschläge!

Grüße
Jens

Hallo Jens,

Es befinden sich keine
Tabulatoren dazwischen sondern Leerzeichen.

aargs, der Anfang deiner Probleme :frowning:

@Munich: Dein Einwand mit den Städten stimmt natürlich, da hab
ich nicht für 3 Cent weiter gedacht.

Tja, hätte Munich nix gesagt hätte ich die Aufgabe für komplett lösbar gehalten. Jetzt sehe ich da gibt es keine Komplettlösung.

Um das manuelle Nachbearbeiten kommst du nicht rum.
Sicher, ggfs. gegen Geld kann man sich eine Liste aller Städtenamen in D besorgen, ggfs. auch ein Firmenverzeichnis, aber es ist ja noch nicht lange gesagt daß in deiner Liste die Stadtnamen so geschrieben sind wie sie offiziell heißen, gleichfalls für Firmennamen.

@Reinhard, wie würde denn das ganze in VBA bzw. Excelformeln
aussehen??

Weiß ich noch nicht.
Jedenfalls kann man da nur so programmieren, daß man sich nur auf den Firmennamen konzentriert. D.h. bei 6 Einträgen ist alles okay, jede Spalte ein Eintrag. bei 7 oder mehr Einträgen werden die ersten x Einträge dem Firmennamen zugeorgdnet.

Bei Städten wie Baden Baden geht das natürlich schief. Also kann man nur alle Zeilen wo mehr als 6 Einträge sind farblich markieren und du mußt diese manuell überprüfen.

Gruß
Reinhard

@Reinhardt, wie würde denn das ganze in VBA bzw. Excelformeln
aussehen??

Hallo Jens,

ich habe Vba genommen, ist kürzer als Formelungetümer plus evtl. Hilfsspalten.

Du willst ja einen Eintrag in A, der zwischen 6 und 9 Einzelwörter enthalten kann, je nach Firmennamen und Stadtnamen, in 6 Spalten aufteilen.
Mein Code geht von diesen Bedingungen aus und teilt die letzten fünf Einzelwörter in A auf die letzten 5 Spalten, C-G auf, der Rest wird in Spalte b geschrieben.

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │ C │ D │ E │ F │ G │
──┼────────────────────────────┼──────────────┼────┼────┼────┼────┼────┤
1 │ W1 W2 W3 W4 W5 W6 W7 W8 W9 │ W1 W2 W3 W4 │ W5 │ W6 │ W7 │ W8 │ W9 │
──┼────────────────────────────┼──────────────┼────┼────┼────┼────┼────┤
2 │ W1 W2 W3 W4 W5 W6 W7 W8 │ W1 W2 W3 │ W4 │ W5 │ W6 │ W7 │ W8 │
──┼────────────────────────────┼──────────────┼────┼────┼────┼────┼────┤
3 │ W1 W2 W3 W4 W5 W6 W7 │ W1 W2 │ W3 │ W4 │ W5 │ W6 │ W7 │
──┼────────────────────────────┼──────────────┼────┼────┼────┼────┼────┤
4 │ W1 W2 W3 W4 W5 W6 │ W1 │ W2 │ W3 │ W4 │ W5 │ W6 │
──┴────────────────────────────┴──────────────┴────┴────┴────┴────┴────┘
Benutzte Formeln:
B1: =meinText($A1;SPALTE())
B2: =meinText($A2;SPALTE())
B3: =meinText($A3;SPALTE())
B4: =meinText($A4;SPALTE())
C1: =meinText($A1;SPALTE())
C2: =meinText($A2;SPALTE())
C3: =meinText($A3;SPALTE())
C4: =meinText($A4;SPALTE())
D1: =meinText($A1;SPALTE())
D2: =meinText($A2;SPALTE())
D3: =meinText($A3;SPALTE())
D4: =meinText($A4;SPALTE())
E1: =meinText($A1;SPALTE())
E2: =meinText($A2;SPALTE())
E3: =meinText($A3;SPALTE())
E4: =meinText($A4;SPALTE())
F1: =meinText($A1;SPALTE())
F2: =meinText($A2;SPALTE())
F3: =meinText($A3;SPALTE())
F4: =meinText($A4;SPALTE())
G1: =meinText($A1;SPALTE())
G2: =meinText($A2;SPALTE())
G3: =meinText($A3;SPALTE())
G4: =meinText($A4;SPALTE())
A1:G4
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Um das zu erreichen, Alt+F11, Einfügen–Modul, nachstehenden Code reinkopieren, Editor schließen.
Dann die Formel in B1 reinschreiben und nach links und unten kopieren.

Function MeinText(Zelle As Range, Spalte As Integer) As String
Dim Wort() As String, N As Integer
Wort = Split(Zelle.Value, " ")
If Spalte \> 2 Then
 MeinText = Wort(UBound(Wort) - 7 + Spalte)
Else
 For N = 0 To UBound(Wort) - 5
 MeinText = MeinText & " " & Wort(N)
 Next N
End If
End Function

Gruß
Reinhard

Hallo Jens,

wie Reinhard schon sagte, es gibt Listen mit Städtenamen, aber durchaus auch als offene Datensammlung. Aber vielleicht benötigst Du diese auch nicht. Sortiere Deine Liste nach Anzahl von Leerzeichen und Du hast bei den Ausstellern mit 5 Leerzeichen die beste Chance Deine ersten Städtenamen zu erwischen. Diese suchst Du dann in den nächsten Datensätzen und arbeitest Dich dann durch. Du hast übrigens Glück, die Spalte Land dürfte ziemlich sicher korrekt gefüllt sein, was bei der Spalte Web nicht zwingend sein muss.

MfG Georg V.

P.S.: Wenn die Stadt noch eine Postleitzahl hat, wäre dies natürlich der ideale Aufsetzpunkt, um die falschen Schreibweisen heruaszufischen.

Suuper Reinhardt - ich denke ich habe es in der Art hinbekommen.

Vielen Dank :smile:

Grüße
Jens