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

Forumthread: Replace von Zeichen die nicht ASCII sind

Replace von Zeichen die nicht ASCII sind
14.09.2020 17:38:26
Zeichen
Userbild
Hallo alle Wissenden!
Stehe wieder einmal vor einem Problem zu welchem ich keine Lösung finde.
Bei der Auswertung einer *.html-Datei welche in Polnisch gehalten ist, kommen natürlich Zeichen aus dem Polnischen vor. Teile von Texten welche ich auf Deutsch ändern möchte enthalten auch solche Zeichen, siehe Bild „Geschlossen_bis.jpg“, bei der Verwendung von VBA Befehl „Replace“ kann ich diese Zeichen, Replace("Zamknięty do","Geschlossen bis"), also das „ę“ mit dem Hacken nach unten, nicht eingeben, da bringt er mir immer im Makro ein „?“.
Wie müsste also der Replace-Befehl aussehen das er diese „ę“ beim Auslesen erkennt.
Hätte es mit „Replace(Inhalt,“ Zamkni“ & chr(118) & “ęty do“, "Geschlossen bis") versucht, will er aber nicht.
Es gibt natürlich auch noch einige andere Polnische Buchstaben mit so allen möglichen Häkchen oben oder Unten, wenn man den Richtigen Weg hat, müsste ja dann die Lösung die gleiche sein.
Gewisse Bereiche in dieser *.html enthalten dann auch noch umgewandelte Zeichen wie,
' %C3%84 = Ä, %C3%A4 = ä, %C3%BC = ü, %C3%B6 = ö,%C3%9F = ß, %20 = " ", %252F = \
wo ich bis jetzt auch nicht dahintergekommen bin, welches Tool zur Umwandlung in ASCII man da nehmen müsste/könnte.
Ich hoffe es kann mir da jemand weiterhelfen und einen Lösungsansatz zeigen
Gruß Siegfried
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Was genau willst Du?
14.09.2020 17:48:26
lupo1
Dass alle z.B. akzentuierten Zeichen zum Grundzeichen ohne Akzent werden, also é, è usw. zu e?
Soll aus der polnischen Stadt das deutsch geschriebene "Lodz" werden?
Soll immer eine 1:1-Umwandlung stattfinden, also niemals 1 in n Zeichen oder n in 1 Zeichen?
AW: Was genau willst Du?
14.09.2020 18:38:11
Siegfried
Hallo lupo1,
nun bei den Ortsnamen, Straße usw. möchte ich schon das Original akzentuierten Zeichen erhalten haben, kann daher nicht über die gesamte Tabelle mit Replace drüber gehen.
Bei bestimmten Angaben, muss ich die in Deutsch übersetzen, da ja sonst keiner der es liest, ohne es mit was anderem zu übersetzen, die Bedeutung nicht erkennt und versteht das die Filiale eben „Geschlossen ist bis …….“ .
Habe mir daher im Makro diesen Replace geschrieben:

  • If Land = "PL" Then _
    Wert_Offen = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Wert_Offen, "
  • ", ""), _
    "Pon.", "Mo"), "wto.", "Di"), "sro.", "Mi"), "Czw", "Do"), "Pt.", "Fr"), "Sob.", "Sa"), "Ndz.", "So."), "handlowa", "Offen"), "handl.", "Offen"), "ty do", "Geschlossen bis"), "Zamkni", ""), "ty w dn.", "Geschlossen vom"), "Zamkni", "")

  • also wenn ein akzentuiertes Zeichen vorkommt, das ganze zweigeteilt dort wo das akzentuierte Zeichen vorkommt, Schönheitsfehler, genau dieses Zeichen bleibt aber auch erhalten vor dem Deutschen Text.
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    14.09.2020 17:52:42
    Zeichen
    Hi
    der VBA-Edior kann nur den klassischen 8-Bit-Zeichensatz.
    wenn man UniCode-Zeichen in VBA verwenden will, dann muss man diese über die Funktion CHRW(...) oder die Funktion worksheetfunction.Unichar(...) verwenden, wobei meines Wissens nach das UniChar mehr zeichen beherrscht als das ChrW.
    ich persönlich würde mich aber nicht großartig mit irgendwelchen Zeichencodes rumplagen, sondern die Zeichen in einer Hilfstabelle hinterlegen und diese verwenden:
    Sheets(1).Cells.Replace Sheets("Hilfstabelle").Range("A1").value, Sheets("Hilfstabelle").Range("B1").value, lookat:=xlpart, Matchcase:=true
    
    wenn man die Daten über die Importfunktion einliest, kann man das Problem oft auch einfach damit beheben, dass man im Schritt 1 des Assistenten bei "Dateiursprung" das passende auswählt.
    Gruß Daniel
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    14.09.2020 17:52:55
    Zeichen
    Hallo Siegfried,
    also rein von der Logik her:
    Wenn er Zamknięty nicht erkennt, erkennt er auch nicht Zamkni“ & chr(118) & “ęty. Du hast das ę ja immer noch drin.
    Hast du es mal damit versucht:
    Zamkni“ & chr(118) & “e“ & “ty“
    Ich hab nicht so viel Ahnung von ASCII, aber rein von der Logik sollte das gehen.
    Entschuldige, wenn es nicht klappt.
    Gruß Marc
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    14.09.2020 18:01:37
    Zeichen
    Hallo Siegfried,
    in den Symbolen von Windows hat das ę den Hexadezimalwert 119 das ist in Dezimal umgerechnet 281. Du kannst aber auch mit dem Hexadezimalwert rechnen.
    In Zelle A1 steht: Zamknięty do
    Dann diesen Code testen:
    Public Sub Test()
        Call Cells(1, 1).Replace("Zamkni" & ChrW(&H119) & "ty do", "Geschlossen bis")
    End Sub

    Gruß
    Nepumuk
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    14.09.2020 23:47:44
    Zeichen
    Hallo Nepumuk,
    nun dein Hinweis mit Replace("Zamkni" & ChrW(&H119) & "ty do", "Geschlossen bis" hat mir am besten geholfen, mit dieser Art funktioniert der Replace bei allen gleichen ChrW(&H119) vorkommen.
    Irgendwann hatte ich schon mal davon gelesen nur leider immer verkehrt gesucht, nach WChr, da wurde ich natürlich nicht fündig.
    Für mich ist nun noch die große Frage, in welcher Tabelle oder LINK kann ich Hinweise zu, eben z.B. Hexadezimalwert 119 oder wie du geschrieben hast, Dezimal umgerechnet 281, finden.
    Denn solche Vorkommen von diakritischen Zeichen, kommen ja gerade in östl. Ländern häufig vor, kann ja doch nicht jedes Mal, wenn mir so ein Zeichen Probleme macht, hier einen Hilferuf absetzen.
    Jedenfalls einmal ein DANKE an alle die geantwortet haben, zur Antwort von Daniel, also mit dem Unichar blicke ich momentan überhaupt nicht durch. Vielleicht könntest du mir da noch etwas Nachhilfe geben.
    Zu Marc, ja genau an diesen beiden nicht funktionierenden Lösungen bin ich auch gestanden, während mit ChrW flutscht es wie es gewünscht wird, sofern man den Hex oder DEZ Wert kennt.
    Für mich ist nach wie vor noch diese Frage offen,
    Gewisse Bereiche in dieser *.html enthalten dann auch noch umgewandelte Zeichen wie,
    ' %C3%84 = Ä, %C3%A4 = ä, %C3%BC = ü, %C3%B6 = ö,%C3%9F = ß, %20 = " ", %252F = \
    Bis jetzt habe ich mir geholfen, da ich an anderen stellen (z.B. Orts od. Straßenamen) mit richtiger Anzeige des Buchstaben finden konnte, Notfalls sogar über das WEB da mir die Koordinaten des Zielpunktes bekannt sind. Ist natürlich eine sehr mühsame und Zeitaufwendige Sache.
    Habe bis jetzt auch nicht herausgefunden in welcher Art Tabelle ich das Rätsel lösen könnte. Aus/in einer Tabelle von „Html Sonderzeichen“ bin ich leider auch nicht fündig geworden, vermute das es für die Darstellung auf der WEB-Seite erforderlich ist diese Zeichen nicht im Klartext zu schreiben.
    Nun vielleicht gibt es noch Helferleins die mir da auch noch weiterhelfen könnten.
    Gruß Siegfried
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    15.09.2020 09:01:35
    Zeichen
    Hallo Siegfried,
    in Excel Reiter Einfügen - ganz rechts - Symbol. Darin wählst du oben bei Schriftart "Arial Unicode MS" und unten bei von "Unicode (hex)". Wenn du jetzt ein bisschen nach unten scrollst findest du das ę und unten bei Zeichencode den Hexadezimalwert dazu. Siehe Bild:
    Userbild
    Zur Funktion UNIZEICHEN (englisch UNICHAR) kann ich nur sagen, dass du damit Unicode-Zeichen in Tabellen erzeugen kannst:
     A
    1ę

    ZelleFormel
    A1=UNIZEICHEN(281)

    Gruß
    Nepumuk
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    15.09.2020 14:08:03
    Zeichen
    Hi Nepumuk,
    also dein Hinweis auf die Einfügung eines neuen Reiters für Symbol, ist mir nach langem Suchen endlich gelungen, habe erst seit kurzem Office 2019, aber wie ich die Tabelle da rein bekomme ist mir leider ein Rätsel, mit 76 anscheinend doch bereits zu Blöd dazu.
    Bitte nochmals um Hilfe, hoffe das mit dem neun Menüpunkt „Symbol“ stimmt wenigstens.
    Gruß Siegfried
    Userbild
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    15.09.2020 14:23:34
    Zeichen
    Hallo Siegfried,
    du sollst keinen neuen Reiter einfügen, sondern im Reiter "Einfügen" auf den Button "Symbol" klicken. Den findest du ganz rechts auf dem Reiter "Einfügen".
    Userbild
    Gruß
    Nepumuk
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    15.09.2020 21:57:39
    Zeichen
    DANKE Nepumuk,
    für den neuerlichen Nachhilfeunterricht, da habe ich beim ersten Anlauf echt nicht durchgeblickt.
    Bleibt also noch die Frage mit den unter HTML abgespeicherten Werte, nach welchen ich gefragt habe, offen.
    Gruß Siegfried
    AW: Replace von Zeichen die nicht ASCII sind
    16.09.2020 08:40:48
    Zeichen
    Hallo Siegfried,
    Dazu kann ich nichts sagen. Ich lass die Frage offen.
    Gruß
    Nepumuk
    Anzeige
    AW: Replace von Zeichen die nicht ASCII sind
    15.09.2020 10:02:33
    Zeichen
    "also mit dem Unichar blicke ich momentan überhaupt nicht durch. "
    UniChar ist das gleiche wie ChrW.
    ChrW ist die VBA-Funktion, UniChar ist die Excelfunktion.
    Über Worksheetfunction kann man die Excelfunktionen auch in VBA einsetzen, was manchmal sinnvoll ist, weil sie etwas anders oder etwas besser funktionieren als die VBA-Variante.
    Gruß Daniel
    Anzeige
    Anmerkung:
    14.09.2020 19:20:23
    Luc:?
    Es gibt in Unicode 2 Methoden, Siegfried,
    um Buchstaben mit diakritischen* Zeichen zu erzeugen:
    1. Das komplette Zeichen verwenden, zB é, wie es in diesem Fall auch per Tastatur aus ´ und e erzeugt wdn kann;
    2. dem normalen Buchstaben ohne Diakritische Zeichen ein kombinierendes (diakritisches) Zeichen folgen lassen.
    Zeichen und ZeichenKombi sind einander nicht gleich. Es könnte folglich auch dazu kommen, das ein Zeichen deshalb nicht gefunden wird, weshalb es ggf sicherer wäre, eine Kopie des Zeichens zu verwenden bzw beide Bildungsarten eindeutig zu unterscheiden. Die Kombi lässt sich übrigens leichter ohne diakritisches Zeichen darstellen.
    * Das ist der richtige Fachausdruck, der auch in der ZeichenTabelle verwendet wird!
    Gruß, Luc :-?
    „Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Zeichen ersetzen: Nicht-ASCII-Zeichen in Excel


    Schritt-für-Schritt-Anleitung

    1. ASCII-Zeichen eingeben: Wenn du in VBA nicht-ASCII-Zeichen wie "ę" nutzen möchtest, verwende die Funktion ChrW() oder WorksheetFunction.Unichar().

      Beispiel:

      Cells(1, 1).Replace "Zamknięty do", "Geschlossen bis"
    2. Zeichen in Excel ersetzen: Du kannst auch eine Hilfstabelle erstellen, um Zeichen umzuwandeln. Speichere die Zeichen, die du ersetzen möchtest, in einer Tabelle und führe dann einen Replace-Befehl aus:

      Sheets(1).Cells.Replace Sheets("Hilfstabelle").Range("A1").Value, Sheets("Hilfstabelle").Range("B1").Value, lookat:=xlPart, Matchcase:=True
    3. Hexadezimalwerte nutzen: Um spezielle diakritische Zeichen zu ersetzen, kannst du deren Hexadezimalwerte nutzen:

      Call Cells(1, 1).Replace("Zamkni" & ChrW(&H119) & "ty do", "Geschlossen bis")

    Häufige Fehler und Lösungen

    • Problem: Zeichen werden nicht erkannt.

      • Lösung: Stelle sicher, dass du die korrekten Unicode-Zeichen verwendest. Verwende ChrW() oder WorksheetFunction.Unichar() für nicht-ASCII-Zeichen.
    • Problem: Ersetzte Zeichen erscheinen als Fragezeichen.

      • Lösung: Dies geschieht oft, wenn das Zeichen nicht im verwendeten Zeichensatz verfügbar ist. Überprüfe, ob du die richtige Schriftart und den korrekten Zeichensatz eingestellt hast.

    Alternative Methoden

    • Importfunktion verwenden: Wenn du Daten importierst, kannst du im Importassistenten das richtige Dateiformat auswählen, um Probleme mit nicht-ASCII-Zeichen zu vermeiden.

    • Symbol-Funktion nutzen: In Excel kannst du unter "Einfügen" -> "Symbol" die ASCII-Tabelle aufrufen und die Zeichen direkt einfügen.


    Praktische Beispiele

    • Beispiel 1: Umwandlung von polnischen Buchstaben auf einer deutschen Tastatur:

      Wert_Offen = Replace(Wert_Offen, "Ł", "L")
    • Beispiel 2: Ersetzen von HTML-kodierten Zeichen:

      • Für %C3%84 = Ä:
        Wert_Offen = Replace(Wert_Offen, "%C3%84", "Ä")

    Tipps für Profis

    • Verwende eine diakritische Zeichen Tabelle, um die Werte der verschiedenen Zeichen schnell nachzuschlagen.
    • Nutze die VBA-Funktion Replace effizient, indem du mehrere Ersetzungen in einer Zeile zusammenfasst.
    • Experimentiere mit der Funktion UNICHAR in Excel, um komplexe Zeichen zu generieren.

    FAQ: Häufige Fragen

    1. Wie kann ich nicht-ASCII-Zeichen in Excel eingeben? Um nicht-ASCII-Zeichen einzugeben, nutze die Funktion ChrW() oder WorksheetFunction.Unichar() in VBA.

    2. Wo finde ich eine Liste von diakritischen Zeichen? Eine diakritische Zeichen tabelle findest du online oder in speziellen Excel-Datenbanken, die Unicode-Zeichen auflisten.

    3. Wie kann ich HTML-kodierte Zeichen in Excel umwandeln? Verwende die Replace-Funktion, um die spezifischen HTML-kodierten Zeichen durch ihre entsprechenden Zeichen zu ersetzen.

    4. Gibt es eine Möglichkeit, alle Zeichen in einer Tabelle zu ersetzen? Ja, du kannst eine Hilfstabelle erstellen und den Replace-Befehl für die gesamte Tabelle anwenden, um effizient alle nicht-ASCII-Zeichen zu ersetzen.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige