Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Umlaute umwandeln

Umlaute umwandeln
19.07.2023 12:48:13
Daniela
Guten Tag zusammen, Ich muss in einer Tabelle die Umlaute (Ö in Oe, Ä in Ae usw.) umwandeln. Dazu habe ich ein Makro gefunden, weiß aber nicht wie ich diese Makro per Button aktiviere. Kann mir jemand einen Tipp geben?

Public Function Umlaut(S)
Dim I As Integer, Ch As String * 1, Ch1 As String * 1, _
    IsUpCase As Boolean, Res As String
  If IsNull(S) Then Umlaut = Null: Exit Function
  Res = ""
  For I = 1 To Len(S)
    Ch = Mid(S, I, 1)
    Ch1 = IIf(I  Len(S), Mid(S, I + 1, 1), " ")
    ' Nächstes Zeichen ist kein Kleinbuchstabe:
    IsUpCase = (Asc(Ch1) = Asc(UCase(Ch1)))
    Select Case Asc(Ch)
      Case Asc("Ä"): Res = Res & IIf(IsUpCase, "AE", "Ae")
      Case Asc("Ö"): Res = Res & IIf(IsUpCase, "OE", "Oe")
      Case Asc("Ü"): Res = Res & IIf(IsUpCase, "UE", "Ue")
      Case Asc("ä"): Res = Res & "ae"
      Case Asc("ö"): Res = Res & "oe"
      Case Asc("ü"): Res = Res & "ue"
      Case Asc("ß"): Res = Res & "ss"
      Case Else: Res = Res & Ch
    End Select
  Next I
  Umlaut = Res
End Function

Grüsse Daniela
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umlaute umwandeln
19.07.2023 12:56:25
Rudi Maintaire
Hallo,
das ist eine Funktion, die du auch in einer Tabelle anwenden kannst.
z.B. B1: = Umlaut(A1)
Du kannst sie aber auch in einem Makro verwenden
Sub aaa()
  MsgBox Umlaut(Range("A1"))
End Sub
Gruß
Rudi

AW: Umlaute umwandeln
19.07.2023 13:06:51
Daniela
Hallo Rudi

Vielen herzlichen Dank für deine schnelle Hilfe. Ich habe dein Sub aaa mal eingebaut. Wenn ich das Aufrufe, zeigt es mir lediglich an dass das Ö, OE sein soll. Es wird jedoch nichts umgewandelt. Mache ich noch was falsch?

Gruß Daniela

Anzeige
AW: Umlaute umwandeln
19.07.2023 13:03:19
Daniel
Hi
dafür ist dieses Makro jetzt auch nicht geeignet, weil es kein eigentliches Makro, sondern eine Funktion ist.
dh mit diesem Code kannst du einen einzelnen Zellwert umwandeln, in dem du in eine andere Zelle die Formel schreibst: =Umlaut(A1), nachdem du diesen Code in ein allgemeines Modul kopiert hast.

Wenn du eine ganze Tabelle umwandeln willst, nimmst du besser die Menüfunktion Start - Bearbeiten - Suchen und Auswählen - Ersetzen und ersetzt dann nacheinander die einzelnen Umlaute, das geht dann mit einem Schritt für die ganze Tabelle.
Beachte ,dass du die Option "Groß/Kleinschreibung beachten" aktiveren musst.
das ganze kannst du gut mit dem Recorder aufzeichnen, so dass du dein Makro hast, dass du einem Button zuweisen kannst.

Gruß Daniel


Anzeige
AW: Umlaute umwandeln
19.07.2023 13:10:46
Daniela
Hallo Daniel, danke dir. Ich möchte natürlich die Umwandlung automatisieren und probiere mal deine Idee mit dem Makro Recorder aus.
Gruß Daniela

AW: Umlaute umwandeln
19.07.2023 13:21:25
GerdL
Hallo Daniela!
Private Sub CommandButton1_Click()
    
    Dim C As Range
    
    For Each C In Range("A1:A200").Cells
        C.Value = Umlaut(C)
    Next

End Sub
Gruß Gerd

Anzeige
AW: Umlaute umwandeln
19.07.2023 13:35:38
Daniela
Hallo Gerd, deine Variante macht genau das was ich mir erhofft hatte.
Ich hatte in der Zwischenzeit den Recorder im Einsatz. Auch das klappt am Schluss, ist aber nicht so benutzerfreundlich wie deine Variante.
Sub Umlaute()
'
' Umlaute Makro
'

'
    Columns("A:A").Select
    Selection.Replace What:="Ö", Replacement:="Oe", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        
        Columns("A:A").Select
    Selection.Replace What:="Ä", Replacement:="Ae", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        
        Columns("A:A").Select
    Selection.Replace What:="ä", Replacement:="ae", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        
        Columns("A:A").Select
    Selection.Replace What:="ö", Replacement:="oe", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
Von daher, lieber auf deine Variante umsteigen. Vielen herzlichen Dank an alle.
lg Daniela

Anzeige
AW: Umlaute umwandeln
19.07.2023 15:55:51
snb
Sub M_snb()
   sn = Array(252, 228, 235, 246, 117, 97, 105, 111)

   For j = 0 To 3
     Sheet1.Cells.Replace Chr(sn(j)), Chr(sn(j + 4)) & "e"
   Next
End Sub

Nachfrage
19.07.2023 17:56:20
KlausFz
Hallo snb,

interessante Lösung mittels Array, bringt aber in Zeile Sheet1.... die Fehlermeldung "Laufzeitfehler 424: Objekt erforderlich"
Ich komme da mit meinen Anfängerkenntnissen in VBA nicht weiter.
Imho behandeln die Charaktercodes doch nur Kleinbuchstaben, oder?

Gruß!
Klaus

Anzeige
AW: Nachfrage
19.07.2023 18:09:32
GerdL
Hallo Klaus,
in einem deutschen Excel ist der Codename des ersten Blattes standardmäßig statt Sheet1
Tabelle1
Gruß Gerd

Danke!
19.07.2023 18:27:50
KlausFz
Hallo Gerd,

da hätte sogar ich drauf kommen können.
Aber mal wieder so ein Fall, wo man immer wieder drüberwegliest und es nicht "Klick" macht.
Danke für Dein Augenöffnen!

Gruß!
Klaus

Anzeige
AW: Umlaute umwandeln
19.07.2023 19:21:26
volti
Und noch 'ne Variante

Sub Ersetzen()
  For i = 1 To 6
    Tabelle1.Cells.Replace Mid$("ÄÖÜäöü", i, 1), Mid$("AOUaou", i, 1) & "e"
  Next i
End Sub
Gruß KH

Noch ne Nachfrage
20.07.2023 00:48:04
KlausFz
Hallo Volti,

Dein Code setzt die Umlaute richtig um, aber liefert bei mir (Excel 2021) immer nur die Großschreibung.
Aus "ändern" wird immer "Aendern".
Ne Idee?

Gruß!
Klaus

Anzeige
AW: Noch ne Nachfrage
20.07.2023 01:02:23
Daniel
Du musst für das Ersetzen/Replace dir richtige Parametereinstellung angeben.
Schau dir den Code an, den Daniela aufgezeichnet hat, da stehen alle Parameter drin.
Man muss nicht alle angeben, aber die wichtigen sollte man nicht weglassen.

Gruß Daniel

Anzeige
AW: Noch ne Nachfrage
20.07.2023 07:45:01
Sigi.21
Hallo Klaus,

mit meiner VBA-Fkt. werden die dt. Umlaute unter Berücksichtigung der Groß- u. Kleinschreibung umgesetzt. (s. Mappe)

Gruß Sigi
https://www.herber.de/bbs/user/159990.xlsm

Danke!!
20.07.2023 08:55:04
KlausFz
Hallo Daniel, Hallo Sigi,

besten Dank Euch beiden für die Hilfe!!!
@Daniel:
Ich komme erst heute Nachmittag dazu, mir die Parameter von Replace (bei Daniela) genauer anzuschauen. Aber ich denke, das pack' ich.
@Sigi:
Ich brauche das als Sub, um im eMailversand via Outlook die Umlaute zu eleminieren. Ich denke, das pack ich auch.
Und 2. Dank: das "ß" hatte ich bisher glatt vergessen.

Schönen Tag Euch beiden!
Klaus

Anzeige
AW: Noch ne Nachfrage
20.07.2023 08:55:55
volti
Hallo Klaus,

hate ich vergessen....

Hier eine ergänzte Version und noch eine abweichende Version, bei der jeder Buchstabe komplett einzeln behandelt werden könnte (also nicht nur "e" angehängt wird) und so auch das ß ersetzt werden kann.

Code:


Sub Ersetzen1() For i = 1 To 6 Tabelle13.Cells.Replace What:=Mid$("ÄÖÜäöü", i, 1), _ Replacement:=Mid$("AOUaou", i, 1) & "e", _ LookAt:=xlPart, MatchCase:=True Next i End Sub Sub Ersetzen2() For i = 1 To 7 Tabelle13.Cells.Replace What:=Mid$("ÄÖÜäöüß", i, 1), _ Replacement:=Mid$("AeOeUeaeoeuess", (i * 2) - 1, 2), _ LookAt:=xlPart, MatchCase:=True Next i End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz


Anzeige
AW: Noch ne Nachfrage
20.07.2023 13:08:05
Daniel
Hi
ich würde das so machen:

dim Ersetzen
dim i as long

Ersetzen = Array("Ä", "Ae", "Ü", "Ue", "Ö", "Oe", "ß", "ss") 'also alle zu ersetzenden Texte auflisten, immer abwechselnd der neue und er alte Wert
For i = 0 to Ubound(Ersetzen) Step 2
    Cells.Replace Ersetzen(i), Ersetzen(i + 1), lookat:=xlpart, MatchCase:=True
    Cells.Replace LCase(Ersetzen(i)), LCase(Ersetzen(i + 1)), lookat:=xlpart, MatchCase:=True
Next
bei der Methode kann man auch unterschiedlich lange Zeichenfolgen austauschen.
dadurch dass man immer abwechselnd alt und neu hinschreibt, hat man eine bessere Übersicht und muss nicht durch abzählen rausfinden, was zusammengehört.
das auflisten der Kleingeschriebenen Zeichenfolgen kann man sich mit hilfe der zweiten Replace-Zeile ersparen.

Gruß Daniel

Anzeige
Letztes Danke!!!
20.07.2023 16:24:59
KlausFz
Hallo Daniel, Hallo Karl-Heinz,

zu den beiden Parametern lookat und MatchCase habe ich mich bei Danielas Code nun auch durchgekämpft.
MS-Hilfe war mal (wieder) wenig hilfreich, eher schon andere VBA-Seiten und natürlich hier - HWH.
Aber Eure beiden Codes sind für mich "VBA-Recordler" natürlich eine Augenweide.
Wieder was dazugelernt!
Riesiges Dankeschön Euch beiden!!!

Gruß!
Klaus

Anzeige
Recorder = Große Hilfe
20.07.2023 17:26:35
Daniel
gerade bei solchen Funktionen, die viele Parameter haben, ist der Recorder eine große Hilfe, weil man sich für die verschiedenen Einstellungen nicht durch die Hilfe quälen muss, sondern einfach von Hand im Assistenten die einzeln Parameter setzen kann und sich dann in Ruhe anschauen kann, wie sich das auf den Code auswirkt.
wenn man das passende hat, dann kopiert man sich den Teil der Aufzeichnung in seinen regulären Code.
Gruß Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Umlaute in Excel umwandeln


Schritt-für-Schritt-Anleitung

  1. Funktion erstellen: Öffne den VBA-Editor mit ALT + F11. Füge ein neues Modul hinzu und kopiere den folgenden Code:

    Public Function Umlaut(S)
        Dim I As Integer, Ch As String * 1, Ch1 As String * 1, _
            IsUpCase As Boolean, Res As String
        If IsNull(S) Then Umlaut = Null: Exit Function
        Res = ""
        For I = 1 To Len(S)
            Ch = Mid(S, I, 1)
            Ch1 = IIf(I < Len(S), Mid(S, I + 1, 1), " ")
            IsUpCase = (Asc(Ch1) = Asc(UCase(Ch1)))
            Select Case Asc(Ch)
                Case Asc("Ä"): Res = Res & IIf(IsUpCase, "AE", "Ae")
                Case Asc("Ö"): Res = Res & IIf(IsUpCase, "OE", "Oe")
                Case Asc("Ü"): Res = Res & IIf(IsUpCase, "UE", "Ue")
                Case Asc("ä"): Res = Res & "ae"
                Case Asc("ö"): Res = Res & "oe"
                Case Asc("ü"): Res = Res & "ue"
                Case Asc("ß"): Res = Res & "ss"
                Case Else: Res = Res & Ch
            End Select
        Next I
        Umlaut = Res
    End Function
  2. Funktion anwenden: In einer Excel-Zelle kannst du nun die Formel =Umlaut(A1) verwenden, um den Inhalt von Zelle A1 umzuwandeln.

  3. Makro erstellen: Wenn du die Umwandlung für eine ganze Spalte (z.B. A1:A200) durchführen möchtest, kannst du das folgende Makro verwenden:

    Private Sub CommandButton1_Click()
        Dim C As Range
        For Each C In Range("A1:A200").Cells
            C.Value = Umlaut(C)
        Next
    End Sub
  4. Makro zuweisen: Weise das Makro einem Button zu, um die Umwandlung per Mausklick auszuführen.


Häufige Fehler und Lösungen

  • Fehlermeldung "Objekt erforderlich": Stelle sicher, dass du den richtigen Blattnamen verwendest. In einer deutschen Excel-Version könnte der Blattname „Tabelle1“ statt „Sheet1“ sein.

  • Keine Umwandlung: Überprüfe, ob die Funktion korrekt in einem Modul gespeichert wurde. Die Funktion muss in einem allgemeinen Modul sein, nicht in einem Arbeitsblattmodul.


Alternative Methoden

  1. Suchen und Ersetzen: Du kannst die Menüfunktion Start - Bearbeiten - Suchen und Auswählen - Ersetzen verwenden, um Umlaute manuell zu ersetzen. Dies ist besonders nützlich, wenn du keine VBA-Kenntnisse hast.

  2. Makro Recorder: Nutze den Makro Recorder, um die Schritte beim Suchen und Ersetzen aufzuzeichnen und dann in einem eigenen Makro zu verwenden.


Praktische Beispiele

  • Um „Ö“ in „Oe“ umzuwandeln, kannst du folgendes Makro verwenden:

    Sub Umlaute()
        Columns("A:A").Select
        Selection.Replace What:="Ö", Replacement:="Oe", LookAt:=xlPart, MatchCase:=True
        ' Weitere Ersetzungen hier hinzufügen
    End Sub
  • Eine kompakte Lösung mit einem Array:

    Sub Ersetzen()
        Dim Ersetzen() As Variant
        Ersetzen = Array("Ä", "Ae", "Ö", "Oe", "Ü", "Ue", "ä", "ae", "ö", "oe", "ü", "ue", "ß", "ss")
    
        Dim i As Long
        For i = LBound(Ersetzen) To UBound(Ersetzen) Step 2
            Cells.Replace What:=Ersetzen(i), Replacement:=Ersetzen(i + 1), lookat:=xlPart, MatchCase:=True
        Next i
    End Sub

Tipps für Profis

  • Kombination von Methoden: Du kannst die Funktion Umlaut in Kombination mit dem Suchen und Ersetzen verwenden, um eine robuste Lösung für das Umwandeln von Umlauten zu erstellen.

  • Parameter anpassen: Achte darauf, die Parameter in der Replace-Methode wie LookAt und MatchCase korrekt zu setzen, um die gewünschten Ergebnisse zu erzielen.


FAQ: Häufige Fragen

1. Wie kann ich Umlaute in Excel automatisch umwandeln?
Du kannst eine benutzerdefinierte Funktion in VBA erstellen, die Umlaute umwandelt, und diese dann in deinen Zellen verwenden.

2. Funktioniert das auch in Excel 2021?
Ja, die genannten Methoden und Makros funktionieren auch in Excel 2021 ohne Probleme.

3. Wie kann ich das Makro einfacher nutzen?
Du kannst das Makro einem Button zuweisen, um die Umwandlung mit einem Mausklick durchzuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige