Bsp.:
1234-56478 wird zu 12 34 - 5 64 78
089-158558 wird zu 0 89 - 15 85 58
035796-98567 wird zu 03 57 96 - 9 85 67
...
Hat jemand von Euch eine Idee, wie ich die Umformatierung möglichst
effizient (also ohne jede einzelne Zeile manuel zu bearbeiten) vornehmen
kann?
Danke im Voraus!
Grüße Georg
"Georg v.Breitenbuch" <von-bre...@online.de> schrieb
> ich habe eine Excel-Spalte in der untereinander 600 Telefonnummern im
Format
> Vorwahl-Durchwahl stehen. Nun möchte ich diese einigermaßen korrekt und
gut
> lesbar formatieren. Nach einem Typo&Layout-Buch bedeutet dies, daß bei
Vor-
> und Durchwahl nach jeder zweiten Ziffer von rechts ein Leerzeichen
(besser
> ein viertel Geviert) eingefügt wird.
da bist du nicht mehr auf dem neuesten Stand. Seit November letzten Jahres
sieht DIN 5008 etwas anderes vor:
"Früher waren Telefonnummern nach DIN grundsätzlich in Zweierblöcken von
rechts ausgehend zu gliedern, die Vorwahl stand in Klammern:
(0 62 81) 43 91.
Damit ist es nun vorbei. Es entfällt nicht nur die Gliederung in
Zweierblöcken, auch auf die Klammern bei der Vorwahl wird verzichtet.
Stattdessen wird "funktionsbezogen" mit Hilfe von Leerzeichen gegliedert.
Leerzeichen werden zum Beispiel zwischen Vorwahl (bzw. Netzkennzahl) und
Rufnummer gesetzt. Lediglich bei der Durchwahl hat sich nichts geändert.
Sie wird wie gewohnt mit Bindestrich angeschlossen:
0621 4391-0
0172 3701458
Bei Servicerufnummern wird die Nummer des Anbieters (z. B. 0190) von der
Ziffer für die Gebührenzählung mit einer Leertaste getrennt. Damit lässt
sich schneller erkennen, wie teuer das Gespräch ist:
0190 8 70098
Und für alle, die sich auf internationalem Parkett bewegen, zum Schluss
auch für die Gliederung internationaler Telefonnummern noch ein Beispiel:
+49 6251 89-0"
Ob du nun per benutzerdefiniertem Format Telefonnummern entsprechend
gegliedert werden können, bezweifle ich, denn eine eindeutige Systematik,
wo Vorwahl, Durchwahl und Rufnummern enden bzw. beginnen, ist in der Regel
nicht eindeutig erkennbar.
Für deine vorhandenen Telefonnummern läßt sich aber möglicherweise durch
Bearbeiten/Ersetzen eine korrekte Gliederung hinkriegen, wenn
beispielsweise Klammern durch Leerzeichen ersetzt werden o.ä.
Vielleicht ist es auch eine Überlegung wert, bei der Überarbeitung gleich
Vorwahl und Rufnummer in getrennten Zellen unterzubringen?
Gruß
Lisa
Eine Lösung per VBA könnte so aussehen (siehe unten)
Teste es besser vorerst an einer Kopie deiner Mappe, denn ich habe
mich hier lediglich auf die von dir geposteten Beispiele bezogen.
Markiere die gewünschten Datensätze und führe den Code aus.
Sub test()
Dim c As Range, i As Integer
Dim x As String, y As String
Dim a As String, b As String
For Each c In Selection
c.NumberFormat = "@"
x = CStr(Left(c, Application.WorksheetFunction. _
Find("-", c) - 1))
y = CStr(Right(c, Len(c) - Application. _
WorksheetFunction.Find("-", c)))
If Len(x) Mod 2 <> 0 Then
a = Mid(x, 1, 1)
For i = 2 To Len(x) Step 2
a = a & " " & Mid(x, i, 2)
Next i
End If
If Len(x) Mod 2 = 0 Then
a = Mid(x, 1, 2)
For i = 3 To Len(x) Step 2
a = a & " " & Mid(x, i, 2)
Next i
End If
If Len(y) Mod 2 <> 0 Then
b = Mid(y, 1, 1)
For i = 2 To Len(y) Step 2
b = b & " " & Mid(y, i, 2)
Next i
End If
If Len(y) Mod 2 = 0 Then
b = Mid(y, 1, 2)
For i = 3 To Len(y) Step 2
b = b & " " & Mid(y, i, 2)
Next i
End If
c.Value = a & " - " & b
Next c
End Sub
--
Ich hoffe, dass dir das weiterhilft.
Es liebs Grüessli aus der Schweiz
Monika Weber
------------------------------------------
Microsoft MVP für Excel
http://www.jumper.ch
http://www.jumper.ch/CODEBOOK.htm
> auch Dir herzlichen Dank für Deine Antwort. Leider wird das Ganze bei mir
> mit einenm Laufzeitfehler 1004 quittiert: "Die Find Eigenschaft des
> WorksheetFunction-Objektes kann nicht zugeordnet werden"
> Hast Du eine Idee, woran das liegen könnte? Liegt es evtl. daran, daß ich
> nur Excel 97 (sorry - habe ich vergessen im ersten Posting zu erwähnen)
zur
> Verfügung habe? Oder habe ich einen Fehler gemacht?
Hm, getestet habe ich es mit XL2000.
Leider habe ich hier keine 97-er Version mehr installiert und kann es
somit auch nicht testen.
Evtl. muss man im Excel 97 das "Application.Worksheetfunction" weglassen.
Ansonsten könntest du versuchen, an Stelle von "Find" ---> "Search"
zu verwenden.
Kleiner Tip noch: Wenn Du die Lösung auf Deine Website schreibst, ergänze
noch, daß es nach der Duchführung kein Zurück mehr gibt (außer ohne
Speichern abzubrechen und neu anfangen). Dein Hinweis mit einer Kopie zu
arbeiten ist also besonders wichtig!
> Uuups- hatte versehentlich den Tabellenkopf mit markiert! Sorry! Jetzt
> funktioniert es bestens (auch mit Application.Worksheetfunction und Find)!
Freut mich, dass es geklappt hat :-).
Danke für's Feedback.
> Kleiner Tip noch: Wenn Du die Lösung auf Deine Website schreibst, ergänze
> noch, daß es nach der Duchführung kein Zurück mehr gibt (außer ohne
> Speichern abzubrechen und neu anfangen). Dein Hinweis mit einer Kopie zu
> arbeiten ist also besonders wichtig!
Stimmt. Es gibt generell keine Rückgängig für VBA-Prozeduren.
Von daher ist das eigentlich für alle Prozeduren wichtig.
Ich werde einen generellen Hinweis auf meine VBA-Seite schreiben.
Danke für den Hinweis.
(... ich werde jetzt noch ein bisschen das schöne Wetter geniessen :-) )
--
> na vielleicht erreiche ich ich ja doch noch vor dem schönen
Wetterpäuschen?
Glück gehabt ;-)
> Es gibt - wie ich leider erst jetzt feststelle - noch ein weitere kleines
> Problem. Im Augenblick werden die Leerzeichen von rechts nach links
> durchgehend eingefügt. Der Rythmus sollte aber - um es ganz korrekt zu
> machen - bei der Vorwahl neu beginnen. Es sollte also statt dem - schon
sehr
> schönen -
> 0 3 50 1 - 52 05 45
> besser
> 0 35 01 - 52 05 45
> stehen. Das wäre dan m.E. ziemlich perfekt. Läßt sich das machen?
Das tut er bei mir auch. Stehen denn mehrere Telefonnummern in einer Zelle?
Ich bin davon ausgegangen, dass jede Nummer in einer Zelle steht.
Betr. der anderen Frage: Du könntest mit einer Sprungmarke arbeiten,
welche vor das Ende der Schleife springt, wenn es zu einem Fehler
kommt:
For Each c In Selection
On Error GoTo Sprungmarke
c.NumberFormat = "@"
[...]
c.Value = a & " - " & b
Sprungmarke:
Next c
End Sub
--
Ich wünsche dir auf viel Sonnenschein :-)
> Das tut er bei mir auch.
Hmm, seltsam jetzt nachdem ich das Ganze nochmals neu gemacht habe klappts!
Danke und nun wirklich viel Spaß an der frischen Luft!
Georg
=WENN(ODER(ISTLEER(A1);LINKS(A1;1)="+");A1;TEXT(LINKS(A1;FINDEN("-";A1)-1);W
ENN(LÄNGE(LINKS(A1;FINDEN("-";A1)-1))/2<>GANZZAHL(LÄNGE(LINKS(A1;FINDEN("-";
A1)-1))/2);"# ";"")&WIEDERHOLEN("##
";GANZZAHL(LÄNGE(LINKS(A1;FINDEN("-";A1)-1))/2))) & "- " &
TEXT(RECHTS(A1;LÄNGE(A1)-FINDEN("-";A1));WENN(LÄNGE(RECHTS(A1;LÄNGE(A1)-FIND
EN("-";A1)))/2<>GANZZAHL(LÄNGE(RECHTS(A1;LÄNGE(A1)-FINDEN("-";A1)))/2);"#
";"")&WIEDERHOLEN("##
";GANZZAHL(LÄNGE(RECHTS(A1;LÄNGE(A1)-FINDEN("-";A1)))/2))))
Formel in eine Hilfsspalte einfügen, Formelergebnisse mit
BEARBEITEN|KOPIEREN und BEARBEITEN|INHALTE EINFÜGEN 'Werte' überschreiben,
alte Spalte löschen.
MfG Ullrich
"Georg v.Breitenbuch" <von-bre...@online.de> schrieb im Newsbeitrag
news:adbv6d$4av$1...@news.online.de...
"Georg v.Breitenbuch" <von-bre...@online.de> schrieb
> danke Dir für Deine ausführliche Antwort. Ich bin allerdings nicht
sicher,
> ob ich das wirklich so mache, wie in der neuen DIN beschrieben (man muß
ja
> nicht jeden Mist mitmachen). Du weißt nicht zufällig, wer die neue Regel
mit
> welcher Begründung durchgesetzt hat?
nein, keine Ahnung.
Da die Gliederung in Zweier-Gruppen allerdings mindestens schon 18 Jahre
galt (du scheinst sie erst jetzt entdeckt zu haben?), sich aber kaum jemand
daran orientierte (ob Firma oder Privatperson: die meisten haben sich
lediglich nach ihrem eigenen Geschmack gerichtet), hat man vermutlich die
Schreibweise nun vereinfacht - evtl. auch im Hinblick auf europäische oder
globalere Regeln, so wie man sich in der Schreibweise des Datums ja auch
anderen Ländern annähert.
Für Privatpersonen ist das alles eh kaum relevant. Und Firmen? Welche
Mitarbeiter interessiert es, wo Datum, Betreffzeile, Unterschriften etc. zu
stehen haben, wo in der Anschrift Anrede, Titel, Name etc. hingehören, wie
Telefon- oder Kontonummer zu gliedern sind? Aber Sekretärin, Bürokaufmann
etc. müssen es mindestens für die IHK-Prüfung wissen. Ebenso natürlich
Werbeagenturen, die evtl. für Briefgestaltung zuständig sind.
Und deshalb lohnt es sich beispielsweise, den Duden-Newsletter zu beziehen,
dem auch die von mir zitierte Erklärung entnommen ist.
Viele Grüße
Lisa