Hallo,
gibt es für Calc eine Möglichkeit, Umlaute automatisch zu umschreiben,
also ü durch ue zu ersetzen und auch ß durch ss? Ich will aus Namen
automatisch E-Mail-Adressen basteln.
Danke,
Micha
Hallo,
gibt es für Calc eine Möglichkeit, Umlaute automatisch zu umschreiben,
also ü durch ue zu ersetzen und auch ß durch ss? Ich will aus Namen
automatisch E-Mail-Adressen basteln.
Danke,
Micha
Micha Kuehn schrieb:
Hallo,
gibt es für Calc eine Möglichkeit, Umlaute automatisch zu umschreiben,
also ü durch ue zu ersetzen und auch ß durch ss? Ich will aus Namen
automatisch E-Mail-Adressen basteln.
Mittlerweile habe ich das Beispiel in
http://www.ooowiki.de/CalcFunktionenText(2f)Zeichenketten.html#Einen_Text_WECHSELN.28.29_oder_ERSETZEN.28.29.3F
gefunden.
Wenn ich das nur für Umlaute machen will, ist das OK. Aber inzwischen
habe ich auch festgestellt, dass es bei mir auch Buchstaben mit Akzenten
im Namen gibt, ich muss also aus é auch ein e machen usw. Wenn ich das
alles einzeln mit wechseln(...) ändere, wird es echt unübersichtlich.
Darum hier die Frage: Übersehe ich evtl. einen fertigen Befehl für so etwas?
Micha
Günther Breitfuß schrieb:
Schau mal hier: https://youtu.be/DzSeVuJmtqo
Danke, aber das ist ja die schon zitierte Lösung mit dem Wechseln-Befehl.
Wenn ich nicht nur Umlaute, sondern auch alle Akzente ersetzen lassen
möchte, wird das zu sehr geschachtelt.
Ich hoffte auch einen Befehl wie
=wandleInLateinischeZeichenUm(A1)
Micha
Hallo Micha,
was ist mit dem Befehl "Suchen und Ersetzen" ? Damit geht es doch ?
Eventuell könnte auch Makro helfen
mit freundlichem Gruss
Martin
Hallo Micha, das Makro
Sub SearchReplace
Dim oD as Object ' [object] Document
Dim os as Object ' [object] Sheet
Dim oRD as Object ' [object] Replace Descriptor
Dim SS() as String ' [array] Search String
Dim RS() as String ' [array] Replace String
Dim iSR as Long ' [index] Search Replace
SS = Array("Ä" ,"ä" ,"Ö" ,"ö" ,"Ü" ,"ü" ,"ß" ,"é")
RS = Array("Ae","ae","Oe","oe","Ue","ue","ss","e")
oD = ThisComponent
oS = oD.Sheets(0)
oRD = oS.createReplaceDescriptor
For iSR=0 To UBound(SS) Step 1
oRD.SearchCaseSensitive = True
oRD.SearchString = SS(iSR)
oRD.ReplaceString = RS(iSR)
oS.ReplaceAll(oRD)
Next iSR
End Sub
führt (beispielsweise) folgende Ersetzungen in dem aktuell geöffneten (fokussierten) CALC-Tabellenblatt für alle Zellen durch:
Äste => Aeste
ähnlich => aehnlich
Öl => Oel
ölig => oelig
Übel => Uebel
über => ueber
Straße => Strasse
Charité => Charite
Für weitere Ersetzungen musst Du nur die Arrays "SS" und "RS" um die entsprechenden Zeichen/Zeichenketten erweitern.
Gruß
Hans-Werner :-))
------ Originalnachricht ------
Hallo OoOHWHOoO,
Hallo Micha, das Makro
Sub SearchReplace
Dim oD as Object ' [object] Document
Dim os as Object ' [object] Sheet
Dim oRD as Object ' [object] Replace Descriptor
Dim SS() as String ' [array] Search String
Dim RS() as String ' [array] Replace String
Dim iSR as Long ' [index] Search ReplaceSS = Array("Ä" ,"ä" ,"Ö" ,"ö" ,"Ü" ,"ü" ,"ß" ,"é")
RS = Array("Ae","ae","Oe","oe","Ue","ue","ss","e")oD = ThisComponent
oS = oD.Sheets(0)
oRD = oS.createReplaceDescriptor
For iSR=0 To UBound(SS) Step 1
oRD.SearchCaseSensitive = True
oRD.SearchString = SS(iSR)
oRD.ReplaceString = RS(iSR)
oS.ReplaceAll(oRD)
Next iSREnd Sub
führt (beispielsweise) folgende Ersetzungen in dem aktuell geöffneten
(fokussierten) CALC-Tabellenblatt für alle Zellen durch:Äste => Aeste
ähnlich => aehnlich
Öl => Oel
ölig => oelig
Übel => Uebel
über => ueber
Straße => Strasse
Charité => ChariteFür weitere Ersetzungen musst Du nur die Arrays "SS" und "RS" um die
entsprechenden Zeichen/Zeichenketten erweitern.
Werden diese Zeichenketten dann nur in das an gleicher Stelle
stehend Pendant aus RS getauscht?
Gruß
Hans-Werner :-))
.... und tschüss
Franklin
Hallo Franklin,
ja, so ist es. Alle "Ä"s werden durch "Ae", alle "ä"s durch "ae", alle "Ö"s durch "Oe" und so weiter ersetzt.
Allerdings habe ich das Ganze (auf die Schnelle) nur mit diesen Wörtern in jeweils unterschiedlichen CALC-Zellen
Äste => Aeste
ähnlich => aehnlich
Öl => Oel
ölig => oelig
Übel => Uebel
über => ueber
Straße => Strasse
Charité => Charite
getestet. Ich hoffe, ich habe Deine Frage so richtig verstanden.
Gruß
Hans-Werner :-))
------ Originalnachricht ------
Hallo OoOHWHOoO,
Hallo Franklin,
ja, so ist es. Alle "Ä"s werden durch "Ae", alle "ä"s durch "ae", alle
"Ö"s durch "Oe" und so weiter ersetzt.
Das ist soweit klar, ich wollte nur wissen / klarstellen, dass man
zu ergänzende Zeichen in "SS" und "RS" immer an der gleichen Stelle
/ Position ergänzen muss.
Allerdings habe ich das Ganze (auf die Schnelle) nur mit diesen Wörtern
in jeweils unterschiedlichen CALC-ZellenÄste => Aeste
ähnlich => aehnlich
Öl => Oel
ölig => oelig
Übel => Uebel
über => ueber
Straße => Strasse
Charité => Charitegetestet. Ich hoffe, ich habe Deine Frage so richtig verstanden.
Gruß
Hans-Werner :-))
.... und tschüss
Franklin
Hallo Franklin,
ja, so ist es, da "SS" und "RS" mit der selben Schleifenvariable "iSR" indiziert werden:
"RS(0)" ersetzt jeweils gefundenes "SS(0)", "RS(1)" ersetzt jeweils gefundenes "SS(1)" und so weiter.
:
SS = Array("Ä" ,"ä" ,"Ö" ,"ö" ,"Ü" ,"ü" ,"ß" ,"é")
RS = Array("Ae","ae","Oe","oe","Ue","ue","ss","e")
:
For iSR=0 To UBound(SS) Step 1
oRD.SearchCaseSensitive = True
oRD.SearchString = SS(iSR)
oRD.ReplaceString = RS(iSR)
oS.ReplaceAll(oRD)
Next iSR
:
Gruß
Hans-Werner :-))
------ Originalnachricht ------
OoOHWHOoO schrieb:
Hallo Micha, das Makro
führt (beispielsweise) folgende Ersetzungen in dem aktuell geöffneten
(fokussierten) CALC-Tabellenblatt für alle Zellen durch:
Lieber OoOHWHOoO/Hans-Werner,
danke für deine Mühen. Das ist nicht ganz, was ich suchte. Ich wollte
die Ersetzung in bestimmten Zellen mit Hilfe einer Formel haben. Habe
jetzt noch die Methode mit den geschachtelten wechseln(...)-Befehlen
verwendet, wenn sie auch wenig elegant ist.
Micha
Hallo Micha,
ich hab mir das jetzt mal angesehen und diese Lösung gefunden:
https://www.dropbox.com/s/ra7qh0jug5nyy18/Umlaute%20tauschen.ods?dl=0
So wie ich das sehe, unterscheidet sverweis nicht Gross- und Kleinbuchstaben - ich habe also alles klein gemacht.
Auf dem 2. Tabellenblatt findet man die Ersetzungstabelle, die beliebig erweitert werden kann - einfach die letzte Zeile nach unten schieben und dazwischen die Werte einfügen.
Für längere Namen als 25 Buchstaben lässt sich das einfach erweitern.
MfG Alois
Aber ein guter Ausgangspunkt ist die Funktion schon; man muss sie nur
einen bisschen [tm] umschreiben:
Function SearchReplace (text As String)
Dim iSR as Long ' [index] Search Replace
Dim SS() as String ' [array] Search String
Dim RS() as String ' [array] Replace String
SS = Array("Ä" ,"ä" ,"Ö" ,"ö" ,"Ü" ,"ü" ,"ß" ,"é")
RS = Array("Ae","ae","Oe","oe","Ue","ue","ss","e")
For iSR=0 To UBound(SS) Step 1
text = Replace (text, SS(iSR), RS(iSR))
Next iSR
SearchReplace = text
End Function
Wolfgang
Hallo Wolfgang & Micha,
so isses, wenn man die Funktion Zellen-orientiert umschreibt :-)) ...
[1] "text" wird (direkt) als Zeichenkette übergeben:
"A1": =SearchReplace("?Ä?ä?Ö?ö?Ü?ü?ß?é") ergibt in "A1": ?Ae?ae?Oe?oe?Ue?ue?ss?e?
[2] "text" wird (indirekt) als Zelleninhalt übergeben:
"A1": ?Ä?ä?Ö?ö?Ü?ü?ß?é und "A2": =SearchReplace(A1) ergibt in "A2": ?Ae?ae?Oe?oe?Ue?ue?ss?e?
Siehe hierzu: https://help.libreoffice.org/Calc/User-Defined_Functions/de
Gruß
Hans-Werner :-))
------ Originalnachricht ------