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

Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln

Forumthread: Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln

Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln
11.09.2025 15:56:33
BoniHH
Hallo in die Runde,

ich möchte gerne in einer Excel-Tabelle alle nationalen Sonderzeichen (vor allem aus der deutschen, der polnischen und der türkischen Sprache) durch ihre jeweiligen ASCII-Äquivalente ersetzen. Ich hatte folgendes schon mal probiert:



Function EntferneAkzente(ByVal Text As String) As String
Dim Original As String: Original = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
Dim Ersatz As String: Ersatz = "AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy"
Dim i As Long

For i = 1 To Len(Original)
Text = Replace(Text, Mid(Original, i, 1), Mid(Ersatz, i, 1))
Next i

EntferneAkzente = Text
End Function

Sub AkzenteEntfernenImMarkiertenBereich()
Dim Zelle As Range
For Each Zelle In Selection
If Not IsEmpty(Zelle.Value) Then
Zelle.Value = EntferneAkzente(Zelle.Value)
End If
Next Zelle
MsgBox "Akzente wurden entfernt!", vbInformation
End Sub


Das funktionierte ganz gut, aber die Liste der zu ersetzenden Zeichen ist nicht vollständig, es fehlen die Zeichen ş ą ć ę ł ń ś ź ż ė. Diese Zeichen kann ich aber gar nicht in den VBA-Editor von Excel kopieren, beim Einfügen werden die automatisch zu den ASCII-Äquivalenten s a c e l n s z z e. Also genau das, was ich im Ergebnis für meine Daten erreichen will. Aber wie programmiere ich das, wenn die die Sonderzeichen nicht in den VBA-Editor eingeben kann?

Oder gibt es ein fertiges Plugin, eine Tool oder sonstwas, was alle nationalen Sonderzeichen auflöst?

Schöne Grüße von der Elbe!
Winfried
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln
11.09.2025 16:19:58
Sigi.21
Hallo Winfried,

das sind erweiterte Zeichen im Unicode. Probier' mal dies:

Function EntferneAkzente(ByVal Text As String) As String

Dim Original As String: Original = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ" & _
ChrW(351) & ChrW(261) & ChrW(263) & ChrW(281) & ChrW(322) & ChrW(324) & ChrW(347) & ChrW(378) & ChrW(380) & ChrW(279)
Dim Ersatz As String: Ersatz = "AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy" & "sacelnszze"
Dim i As Long

For i = 1 To Len(Original)
Text = Replace(Text, Mid(Original, i, 1), Mid(Ersatz, i, 1))
Next i

EntferneAkzente = Text
End Function



Gruß Sigi
Anzeige
AW: Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln
11.09.2025 17:14:44
BoniHH
Das sieht ziemlich gut aus. Jetzt fehlen (in der Hoffnung, dass ich kein mögliches Zeichen übersehen habe) nur noch die Großbuchstaben zu diesen erweiterten Sonderzeichen. Hast Du die auch parat?
AW: Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln
11.09.2025 17:35:00
Uduuh
Hallo,
kuckst du https://symbl.cc/de/unicode-table/

Gruß aus'm Pott
Udo
Anzeige
AW: Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln
11.09.2025 18:23:32
Sigi.21
Hallo Winfried,

die Großbuchstaben alle um -1 reduziert.

Function EntferneAkzente(ByVal Text As String) As String

Dim Original As String: Original = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ" & _
ChrW(351) & ChrW(261) & ChrW(263) & ChrW(281) & ChrW(322) & ChrW(324) & ChrW(347) & ChrW(378) & ChrW(380) & ChrW(279) & _
ChrW(350) & ChrW(260) & ChrW(262) & ChrW(280) & ChrW(321) & ChrW(323) & ChrW(346) & ChrW(377) & ChrW(379) & ChrW(278)

Dim Ersatz As String: Ersatz = "AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy" & "sacelnszzeSACELNSZZE"
Dim i As Long

For i = 1 To Len(Original)
Text = Replace(Text, Mid(Original, i, 1), Mid(Ersatz, i, 1))
Next i

EntferneAkzente = Text
End Function


Gruß Sigi
Anzeige
AW: Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln
11.09.2025 16:27:30
daniel
Hi
ich würde die Zeichen in einer Hilfstabelle hinterlegen, bsp im Tabellenblatt ACSII in den Spalten A (mit Akzent) und B (lateinisch) und dann diese Liste durcharbeiten lassen.

Sub AkzenteEntfernenImMarkiertenBereich()

Dim Zelle as Range
for each Zelle in Sheets("ASCII").Cells(1, 1).CurrentRegion.Columns(1).Cells
Selection.Replace Zelle.Value, Zelle.Offset(0, 1).value, lookat:=xlpart, MatchCase:=True
Next
End Sub


wenn du dann feststellst, dass was fehlt, kannst du die Zeichen einfach in dieser Liste ergänzen.
Außerdem erlaubt dir diese Liste, auch längere Zeichenfolgen mit 2 oder 3 Zeichen auszutauschen, wobei die Ersatzzeichenfolge auch eine andere Länge haben kann.
(ersetze "ä" durch "ae")

Gruß Daniel
Anzeige
AW: Alle nationalen Sonderzeichen in ASCII-Äquivalente umwandeln
11.09.2025 16:35:43
daniel
Hi
noch ein Nachteil deiner Variante:
wenn du die Zeichen "hart" im Code vorgibst, hast du das Problem dass du nur Zeichen des 8-Bit-Ascii-Codes direkt als Text eingeben kannst.
sobald Unicode-Zeichen verwendet werden, kannst du diese nicht mehr direkt über den Editor eingeben, weil dieser auf die 8-bit beschränkt ist
in der Tabelle kannst du diese Zeichen einfach einfügen.
Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige