In einer Zeile PLZ auslesen

Hallo,

ich habe folgendes Problem.
Eine Tabelle mit nur einer Spalte - Darin enthalten:
Unternehmensname Straße PLZ Ort Kundennummer

Da der Unternehmensname gern auch aus mehrere Worten besteht,
kann ich als Trenner nicht das „Leerzeichen“ nehmen. Dann müsste
ich alle 3500 Datensätze noch einmal manuell bearbeiten.

Meine Idee wäre irgendein VB-Script welches nach einer 5-stelligen Zahl je Zeile sucht, davor und dahinter ein Semmikolon setzt und dann könnte ich die Tabelle ordentlich teilen?

Hat hierzu jemand eine gute Idee oder einen anderen Ansatz?
Bin leider nicht so der Programmierprofi.

Vielen Dank
Grüße
sassel

VBS
Hallo Sassel,

anbei ein mögliches Script.

Public Function GetZIP(sString As String, Optional sDelimiter As String = " ") As String
 Dim aParts, nCounter As Integer
 aParts = Split(sString, sDelimiter)

 For nCounter = 0 To UBound(aParts) - 1
 If Val(aParts(nCounter)) \> 1000 Then
 GetZIP = aParts(nCounter)
 nCounter = UBound(aParts)
 End If
 Next nCounter
End Function ' GetZIP()

Auf die schnelle funktioniert es so weit bei mir.

Gruß
Christian

Hi Christian,

vielen Dank für deine schnelle Antwort.
Leider bin ich nicht so tief in der Programmier-Thematik drin.

Wie kann ich dies denn jetzt in Excel übernehmen?

Wollte einfach ein Macro erstellen und das dann übernehmen.
Kann aber mit den Fehlermeldungen nichts wirklich anfangen.

Grüße
Sassel

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Eine Tabelle mit nur einer Spalte - Darin enthalten:
Unternehmensname Straße PLZ Ort Kundennummer
Da der Unternehmensname gern auch aus mehrere Worten besteht,
kann ich als Trenner nicht das „Leerzeichen“ nehmen. Dann
müsste
ich alle 3500 Datensätze noch einmal manuell bearbeiten.

Meine Idee wäre irgendein VB-Script welches nach einer
5-stelligen Zahl je Zeile sucht, davor und dahinter ein
Semmikolon setzt und dann könnte ich die Tabelle ordentlich
teilen?

Hi Sassel,
ich glaube nicht daß du ohne manuelle Nachbearbeitung auskommst.
Code nimmt aus jeder Zelle in Spalte A den Eintrag, sucht die erste 5stellige Zahl, ummantelt sie mit „;“ und schreibt den geänderten Eintrag in Spalte B.
In ein Standardmodul:

Option Explicit
'
Sub tt()
Dim Zei As Long, Satz, S
For Zei = 1 To Range("A" & Rows.Count).End(xlUp).Row
 Satz = Split(Cells(Zei, 1))
 For S = 0 To UBound(Satz)
 If IsNumeric(Satz(S)) And Len(Satz(S)) = 5 Then
 Satz(S) = ";" & Satz(S) & ";"
 Cells(Zei, 2) = Join(Satz)
 Exit For
 End If
 Next S
Next Zei
End Sub

Gruß
Reinhard

Hallo sassel!

Ich hab das auch mal auf Formelbasis probiert:

=WENN(ISTZAHL(FINDEN(" „;A1;FINDEN(“ „;A1))+1);TEIL(A1;1;FINDEN(“ „;A1)-1)&“; „&TEIL(A1;FINDEN(“ „;A1)+1;5)&“;"&TEIL(A1;FINDEN(" „;A1)+7;LÄNGE(A1)-FINDEN(“ „;A1));“")

In A1 steht der Text. Wenn die Formel noch nicht einwandfrei sein sollte, bitte melde dich bei mir.

Gruß Alex

Hallo sassel!

Da bin ich mal wieder einem Denkfehler aufgesessen. Ich meinte, dass Istzahl auch in Texten Zahlen findet. Natürlich klappt das nicht… Aber ich könnte dir eine Lösung mit der Code- oder Zeichen-Formel basteln. Aber leider bin ich momentan etwas im Stress. Ich hab morgen eine große Prüfungssession auf der Uni. Da sollte ich noch was lernen…

Gruß Alex

Hallo,

ich habe folgendes Problem.
Eine Tabelle mit nur einer Spalte - Darin enthalten:
Unternehmensname Straße PLZ Ort Kundennummer

Frage - wer hat dir die Tabelle erstellt?
Wie ist die so entstanden?
Kann man die auch noch in einem besser zu verarbeitenden Format bekommen?
Du hast nur 3500 Adressen - da geht das noch, aber es ist grundsätzlich sehr riskant - da kann leicht Murks entstehen.
Du solltest auf jeden Fall das Resultat nochmal visuell überprüfen.
Grüße
Michael