Excel soll nach ASCII-Code sortieren
Ich habe mir eine Liste von Tastaturbelegungen in Excel angelegt, damit ich stets meine Belegung dokumentiert habe für den Fall, dass die Software spinnt. Diese Software – es ist der Microsoft Flugsimulator X – reiht in ihrem Einstellungsdialog über 400 Funktionsnamen dummerweise nach dem numerischen Wert der Zeichen (ASCII-Code) sortiert auf: erst alle Großbuchstaben von A bis Z, dann die Kleinbuchstaben, zum Schluss die Umlaute. Excel hingegen unterscheidet bei der alphabetischen Sortierung nicht zwischen Groß- und Kleinbuchstaben und sortiert das „ä“ zwischen „a“ und „b“ ein. Eine Sortierung in Excel bringt daher die Einträge im Vergleich mit der FSX-Anzeige gehörig durcheinander. Gibt es eine Möglichkeit, in Excel eine Sortierung nach dem numerischen ASCII-Wert einzustellen?
- Bernd Behr
Ich habe mir eine Liste von Tastaturbelegungen in Excel angelegt, damit ich stets meine Belegung dokumentiert habe für den Fall, dass die Software spinnt. Diese Software – es ist der Microsoft Flugsimulator X – reiht in ihrem Einstellungsdialog über 400 Funktionsnamen dummerweise nach dem numerischen Wert der Zeichen (ASCII-Code) sortiert auf: erst alle Großbuchstaben von A bis Z, dann die Kleinbuchstaben, zum Schluss die Umlaute. Excel hingegen unterscheidet bei der alphabetischen Sortierung nicht zwischen Groß- und Kleinbuchstaben und sortiert das „ä“ zwischen „a“ und „b“ ein. Eine Sortierung in Excel bringt daher die Einträge im Vergleich mit der FSX-Anzeige gehörig durcheinander. Gibt es eine Möglichkeit, in Excel eine Sortierung nach dem numerischen ASCII-Wert einzustellen?
Excel kann zwar nach benutzerdefinierten Listen sortieren und unterscheidet auch Klein- und Großbuchstaben, wenn man im Dialog zur benutzerdefinierten Sortierung die zugehörige Option setzt. Damit lässt sich die gewünschte Sortierung aber noch nicht herstellen.
Für eine einfache Lösung könnten Sie die Funktion Code() einsetzen, die den numerischen Wert eines Zeichens zurückgibt. Sie berücksichtigt allerdings nur das erste Zeichen des Textes in einer Zelle. Fügen Sie dazu in der Tabelle vor der zu sortierenden Spalte eine Hilfsspalte ein und füllen Sie diese mit der Funktion Code(). Als Wert geben Sie die zu sortierende Textspalte an. Wenn Sie nun die Tabelle nach der Hilfsspalte sortieren lassen, reicht das ja manchmal schon.
Für eine richtige Sortierung nach dem ganzen Text der Spalte müssten Sie eine Visual-Basic-Funktion wie die folgende einsetzen:
Public Function Txt_to_ASCII(text As String) As String
Dim i, ascii As Integer
Dim Zeichen, ascii_Ziff, ascii_Str As String
ascii_Str = ""
For i = 1 To Len(text)
Zeichen = Mid(text, i, 1)
ascii = Asc(Zeichen)
ascii_Ziff = Format(CStr(ascii), "000")
ascii_Str = ascii_Str & ascii_Ziff
Next i
Txt_to_ASCII = ascii_Str
End Function
Öffnen Sie den VBA-Editor über das Menü „Extras/Makro/Visual Basic-Editor“. Auf der linken Seite sehen Sie den Namen Ihrer Tabelle; öffnen Sie mit der rechten Maustaste das Kontextmenü und klicken Sie auf Einfügen/Modul. Es öffnet sich rechts ein Fenster, in das Sie das obige Listing einfügen, anschließend speichern und den VBA-Editor schließen.
In der Tabelle gehen Sie genau wie oben für die Funktion Code() beschrieben vor. Gehen Sie in die erste Zelle der Hilfsspalte und wählen dann im Menü Einfügen/Funktion. Im folgenden Dialog sollten Sie links in der Kategorienübersicht unten die Kategorie „Benutzerdefiniert“ finden und, wenn Sie darauf geklickt haben, rechts die neu eingefügte Funktion „Txt_to_ASCII“. Wählen Sie sie aus, kopieren Sie sie über die ganze Hilfsspalte und sortieren Sie anschließend nach dieser Spalte. (bb/db)
(bb)