Ich versteh es auch nicht,
Wenne s keine Tel.-Nr. gibt, funktioniert das mit den 0000 einfwandfrei.
Gibt es allerdings keine Fax-Nr. wird die PLZ wohl als Nummer erkannt.
Falls es z.B. dazu kommt.
name, firma
Tel.Nr., plz+Ort
dann wird nur die erste zeile (wie es sein soll) und Tel.Nr. übernommen.
Allerdings widerspricht sich das mit der Ausgabe von anderen Datensätzen.
so sieht eine Anschrift aus bei der die "0000" nicht in die Zelle für Fax geschrieben werden.
Name, Firma
Telnr, PLZ+Ort, Straße
PLZ+Ort rutscht nach links in die Zelle für Fax-Nr. die Straße in die Zelle für PLZ+Ort.
die Zelle für Straße bleibt logischer Weise frei.
So sieht das verwendete Makro aus:
Sub neu()
Dim i, wl, zeile, zn As Long
Dim ws, ts, tel As String
ws = ActiveSheet.Name
zn = 2
'Neues Blatt wird am Ende eingefügt
Worksheets.Add After:=Worksheets(Worksheets.Count)
'Neues Blatt benennen
ActiveSheet.Name = "Daten neu"
'Überschriften im neuen Arbeitsblatt
Worksheets("Daten neu").Range("A1") = "Name"
Worksheets("Daten neu").Range("B1") = "Firma"
Worksheets("Daten neu").Range("C1") = "Telefon"
Worksheets("Daten neu").Range("D1") = "Fax"
Worksheets("Daten neu").Range("E1") = "PLZ + Ort"
Worksheets("Daten neu").Range("F1") = "Straße"
'Daten werden in das Zielblatt geschrieben
For zeile = 1 To Worksheets(ws).UsedRange.SpecialCells(xlCellTypeLastCell).Row Step 3
'Hier wird das Komma in der ersten Zeile gesucht
wl = Len(Worksheets(ws).Cells(zeile, 1))
For i = 1 To wl
If Mid(Worksheets(ws).Cells(zeile, 1), i, 1) = "," Then Exit For
Next i
If i >= wl Then
'kein Komma in Zeile gefunden
Worksheets("Daten neu").Cells(zn, 1) = Worksheets(ws).Cells(zeile, 1)
Worksheets("Daten neu").Cells(zn, 2) = "keine"
Else
'Name und Firma aus 1. Zeile werden ins neue Blatt übertragen
Worksheets("Daten neu").Cells(zn, 1) = Left(Worksheets(ws).Cells(zeile, 1), i - 1)
Worksheets("Daten neu").Cells(zn, 2) = Right(Worksheets(ws).Cells(zeile, 1), wl - i - 1)
End If
'zweite Zeile wird zerlegt
'Telefonnummer wird ermittelt
'1. Komma nach Telefonnummer wird gesucht
wl = Len(Worksheets(ws).Cells(zeile + 1, 1))
For i = 1 To wl
If Mid(Worksheets(ws).Cells(zeile + 1, 1), i, 1) = "," Then Exit For
Next i
'Hier wird die Telefonnummer mit Telefon in Variable geschrieben
tel = Left(Worksheets(ws).Cells(zeile + 1, 1), i - 1)
'Hier wird der restliche Inhalt in Variable geschrieben
ts = Right(Worksheets(ws).Cells(zeile + 1, 1), wl - i - 1)
'Hier wird die reine Telefonnummer gesucht
For i = 1 To Len(tel)
If IsNumeric(Mid(tel, i, 1)) = True Then Exit For
Next i
'Telefonnummer wird in Zeile geschrieben
'Hochkomma wird eingefügt, damit führende Null erhalten bleibt
If Mid(tel, i, 1) = "" Then
'Falls keine Zahl gefunden wird, wird 0000 eingefügt
Worksheets("Daten neu").Cells(zn, 3) = "'0000"
Else
'Hochkomma wird eingefügt, damit führende Null erhalten bleibt
Worksheets("Daten neu").Cells(zn, 3) = "'" & Right(tel, Len(tel) - i + 2)
End If
'Fax-Nummer
wl = Len(ts)
For i = 1 To wl
If Mid(ts, i, 1) = "," Then Exit For
Next i
'Hier wird die Fax_Nummer in Variable geschrieben
tel = Left(ts, i - 1)
'Hier wird der restliche Inhalt in Variable geschrieben
ts = Right(ts, wl - i - 1)
'Hier wird die reine Fax-Nummer gesucht
For i = 1 To Len(tel)
If IsNumeric(Mid(tel, i, 1)) = True Then Exit For
Next i
'Fax-Nr. wird in Zeile geschrieben
'Hochkomma wird eingefügt, damit führende Null erhalten bleibt
If Mid(tel, i, 1) = "" Then
'Falls keine Zahl gefunden wird, wird 0000 eingefügt
Worksheets("Daten neu").Cells(zn, 4) = "'0000"
Else
'Hochkomma wird eingefügt, damit führende Null erhalten bleibt
Worksheets("Daten neu").Cells(zn, 4) = "'" & Right(tel, Len(tel) - i + 1)
End If
'PLZ & Ort - Komma wird gesucht
wl = Len(ts)
For i = 1 To wl
If Mid(ts, i, 1) = "," Then Exit For
Next i
Worksheets("Daten neu").Cells(zn, 5) = Left(ts, i - 1)
'Straße - Komma wird gesucht
'Straße
If Len(ts) <= i Then
Worksheets("Daten neu").Cells(zn, 6) = "keine"
Else
Worksheets("Daten neu").Cells(zn, 6) = Right(ts, Len(ts) - i - 1)
End If
'Zeilennummer für Zielblatt wird erhöht
zn = zn + 1
Next zeile
End Sub