Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
996to1000
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
Inhaltsverzeichnis

Namen in Zelle Drehen, dabei ÄÖÜß erstetzen

Namen in Zelle Drehen, dabei ÄÖÜß erstetzen
04.08.2008 17:20:13
Lemmi
Hallo zusammen,
ich habe eine Namensliste die ich gerne, wie nachfolgend beschreiben, umwanden möchte !
Peter, Maier.................zu ..............Maier, Peter
bei dem Umwandel möchte ich alle ÄÖÜß... ersetzen!
z. B.
Jörg, Müller.................zu...............Mueller, Joerg
Hanz, Stauß................zu...............Strauss, Hanz
wie kann man das umsetzen?
Gruß
Lemmi

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Einfach den Rest anpassen
04.08.2008 17:30:00
Backowe
Hi,
 AB
1Jörg, MüllerMueller, Joerg

Formeln der Tabelle
ZelleFormel
B1=WECHSELN(WECHSELN(TEIL(A1;FINDEN(",";A1)+2;99); "ö";"oe"); "ü";"ue")&", "&WECHSELN(WECHSELN(LINKS(A1;FINDEN(",";A1)-1); "ö";"oe"); "ü";"ue")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruss Jürgen

Anzeige
AW: Einfach den Rest anpassen
04.08.2008 18:47:04
Lemmi
Hallo Jürgen,
habe mal den Ausdrück etwas erweitert!
=WECHSELN(WECHSELN(wechseln(WECHSELN(WECHSELN(WECHSELN(WECHSELN(TEIL(A9;FINDEN(",";A9)+2;99); "ä"; "ae"); "ö";"oe"); "ü";"ue");"ß";"ss"); "Ä";"Ae"); "Ö";"Oe"); "Ü";"Ue") &", "&WECHSELN(wechseln(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(LINKS(A9;FINDEN(",";A9)-1); "ä";"ae"); "ö";"oe"); "ü";"ue");"ß";"ss"); "Ä";"Ae"); "Ö";"Oe"); "Ü";"Ue")
bekomme jetzt immer mit dem Ausdruck eine Fehlermeldung! Warum?
=WECHSELN(WECHSELN(wechseln(WECHSELN(WECHSELN(WECHSELN(TEIL(A9;FINDEN(",";A9)+2;99); "ä";"ae"); "ö"; "oe"); "ü";"ue");"ß";"ss"); "Ä";"Ae"); "Ö";"Oe") &", "&WECHSELN(wechseln(WECHSELN(WECHSELN(WECHSELN(WECHSELN(LINKS(A9;FINDEN(",";A9)-1); "ä";"ae"); "ö";"oe"); "ü";"ue");"ß";"ss"); "Ä";"Ae"); "Ö";"Oe")
Gruß
Lemmi

Anzeige
Es liegt an der Verschachelungstiefe!
04.08.2008 19:06:00
Backowe
Hi Lemmi,
einfach noch einen Zwischenschritt einbauen, oder durch das Makro die Umlaute ersetzen.
 ABC
9Jörg, MüllerMueller, JoergMueller, Joerg

Formeln der Tabelle
ZelleFormel
B9=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(TEIL(A9;FINDEN(",";A9)+2;99); "ä"; "ae"); "ö";"oe"); "ü";"ue"); "ß";"ss"); "Ä";"Ae"); "Ö";"Oe") &", "&WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(LINKS(A9;FINDEN(",";A9)-1); "ä";"ae"); "ö";"oe"); "ü";"ue"); "ß";"ss"); "Ä";"Ae"); "Ö";"Oe")
C9=WECHSELN(LINKS(B9;FINDEN(",";B9)-1); "Ü";"Ue")&", "&WECHSELN(TEIL(B9;FINDEN(",";B9)+2;99); "Ü";"Ue")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruss Jürgen

Anzeige
oder durch das Makro die Umlaute ersetzen.
04.08.2008 19:39:58
Matthias
Hallo Jürgen
Vorschlag
Ich würde das Makro noch etwas beschleunigen.
Ich hatte in "A1:K41" mit 65 zufälligen Umlauten getestet
Ohne die Abfrage, ob die Zelle leer ist, dauert der Code um einiges länger.
Und das ScreenUpdating ist eh allgemein bekannt, für Geschwindigkeitsgewinn.
Sub UmlauteErsetzen() Dim Zelle As Range Application.ScreenUpdating = False For Each Zelle In [A1:K41] If Not IsEmpty(Zelle) Then With Zelle .Replace What:="Ö", Replacement:="Oe", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True .Replace What:="Ä", Replacement:="Ae", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True .Replace What:="Ü", Replacement:="Ue", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True .Replace What:="ö", Replacement:="oe", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True .Replace What:="ä", Replacement:="ae", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True .Replace What:="ü", Replacement:="ue", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True .Replace What:="ß", Replacement:="ss", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True End With End If Next Application.ScreenUpdating = True End Sub


[ Geschmackssache :o) ]
Der VBA Code gefällt mir persönlich auf jeden Fall besser als die Formelvariante ( sie ist aber ebenso interessant )
Userbild

Anzeige
Es war eine quick & dirty Lösung, ...
04.08.2008 19:48:00
Backowe
Hallo Matthias,
... ich persönlich ziehe die Makro- der Formelvariante auch vor. Deinen Anmerkungen sind in Ordung und sinnvoll. Ich habe im Moment gar nicht soweit gedacht, da mein Testszenario nur 3 Zellen waren. ;o)
Gruss Jürgen

Daniel hat ja noch ne Schippe draufgelegt :o) oT
04.08.2008 20:56:00
Matthias

AW: oder durch das Makro die Umlaute ersetzen.
04.08.2008 20:01:47
Daniel
Hi
wenn du schon das Makro beschleunigen willst, dann richtg. Die Schleife ist doch völlig überflüssig und bei grösseren Datenmengen katasrophal langsam

Sub UmlauteErsetzen()
application.screenupdating = false
With Range("A1:K41")
.Replace What:="Ö", Replacement:="Oe", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="Ä", Replacement:="Ae", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="Ü", Replacement:="Ue", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="ö", Replacement:="oe", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="ä", Replacement:="ae", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="ü", Replacement:="ue", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="ß", Replacement:="ss", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
End With
application.screenupdating = true
End Sub


kleiner Tip noch am Rande auch wenn es nicht viel ausmacht, aber: Range("A1:K41") ist auch schneller als [A1:K41]
Gruß, Daniel

Anzeige
AW: noch mehr geschwindigkeit
04.08.2008 20:09:00
Daniel
bekommst du, wenn du die vollständigen REPLACE-Parameter nur in der ersten Relpace-Anweisung verwendest und in den folgenden nur diejenigen angibst, die sich ändern.
da bei fehlenden Parametern immer die zuletzt verwendeten weiterbenutzt werden, sollte es auch so sauber funktionieren:

Sub UmlauteErsetzen1()
Range("A1:K200").Value = "äüöÄÜÖ"
Application.ScreenUpdating = False
With Range("A1:K200")
.Replace What:="Ö", Replacement:="Oe", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="Ä", Replacement:="Ae"
.Replace What:="Ü", Replacement:="Ue"
.Replace What:="ö", Replacement:="oe"
.Replace What:="ä", Replacement:="ae"
.Replace What:="ü", Replacement:="ue"
.Replace What:="ß", Replacement:="ss"
End With
Application.ScreenUpdating = True
End Sub


Gruß, Daniel

Anzeige
Das hat mich überzeugt :o) oT
04.08.2008 20:47:00
Matthias

halb so langsam...
04.08.2008 21:29:00
Original
Option Explicit
Option Base 1
Sub UmlauteErsetzen1()
Dim arrA
Dim arrB
Dim i As Byte
arrA = Array("Ä", "Ö", "Ü", "ä", "ö", "ü", "ß")
arrB = Array("Ae", "Oe", "Ue", "ae", "oe", "ue", "ss")
Range("A1:z1000").Value = "äüöÄÜÖß"
Application.ScreenUpdating = False
For i = 1 To 7
Range("A1:z1000").Replace What:=arrA(i), Replacement:=arrB(i), LookAt:=xlPart
Next
Application.ScreenUpdating = True
End Sub


Code eingefügt mit strg + c
mfg Kurt

AW: halb so langsam...nicht ganz
04.08.2008 22:56:00
Daniel
Hi
also erstmal muss ich meine letzte Optimierung zurückziehen, MatchCase = TRUE muss bei jedem Replace gesetzt werden, diese Option wird nicht aus der vorherigen übernommen !
@ Hi Kurt, dein Makro ist nur schneller, weil du aus kleinen äs grosse Äs machst.
lass dein Makro mal mit MatchCase = True laufen und es wird auch wieder um die hälfte langsamer (bei mir 4,4 statt 2,9 sekunden, mein Code läuft mit MatchCase = True mit 3,7 sec durch)
allerdings ist dein Code kürzer und eleganter und leichter zu pflegen
Gruß, Daniel

Anzeige
AW: halb so langsam...nicht ganz
05.08.2008 17:17:00
Original
Hi,
die Interpretation meines Codes ist schon sehr eigenwillig, um nicht zu sagen schlicht falsch.
mfg Kurt

AW: halb so langsam...nicht ganz
05.08.2008 22:48:00
Daniel
Hi
wie sollte man deinen Code denn dann interpretieren?
schneller ist er leider nicht, das muss man nicht interpretieren, das kann man messen.
Gruß, Daniel

Oder so
04.08.2008 18:00:54
Backowe
Hi,
Bereich bitte anpassen
VBA-Code:
Sub UmlauteErsetzen()
Dim Zelle As Range
For Each Zelle In [A1:A10]
  With Zelle
    .Replace What:="Ö", Replacement:="Oe", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True
    .Replace What:="Ä", Replacement:="Ae", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True
    .Replace What:="Ü", Replacement:="Ue", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True
    .Replace What:="ö", Replacement:="oe", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True
    .Replace What:="ä", Replacement:="ae", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True
    .Replace What:="ü", Replacement:="ue", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True
     .Replace What:="ß", Replacement:="ss", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True
  End With
Next
End Sub
Gruss Jürgen

Anzeige
AW: Oder so
05.08.2008 21:02:35
Lemmi
Hallo Backowe,
habe Deine Code gerade eingebunden! Hat so weit alles geklappt besten Dank!
Gruß
Lemmi

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige