Was muß man tun, damit Excel Umlaute immer nach den gleichen Regeln sortiert?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die StrComp-Funktion mit dem Parameter „Text“ sollte dir da weiterhelfen.

http://msdn.microsoft.com/de-de/library/9s233cfc(v=vs.90).aspx

maxbreak 
Fragesteller
 06.12.2011, 11:40

Super, Danke! Ich habe mal erste Tests mit dem Umlaut Ö gemacht. Schaut soweit sehr gut aus. Kann man davon ausgehen, daß es mit allen Sonderzeichen und Groß-/Kleinschreibung (z. B. A=a) funktioniert?

Im Test käme -1 zurück, was ok ist:

Private Sub CommandButton1_Click()
  Dim TestStr1 As String
  Dim TestStr2 As String
  Dim TestComp As Integer
'  Dim myCompareMethod As Microsoft.VisualBasic.VbCompareMethod
  Dim myCompareMethod As VbCompareMethod

  TestStr1 = "Schatz"
  TestStr2 = "Schött"
  TestComp = StrComp(TestStr1, TestStr2, vbTextCompare)

End Sub
0
Babelfish  06.12.2011, 11:59
@maxbreak

Zur ersten Frage: In der Beschreibung steht, dass Groß- und Kleinschreibung nicht berücksichtigt wird - also ja, es sollte klappen.

Zur zweiten Frage: Schau mal unter der Überschrift „Hinweise“ den Link zur Compare-Anweisung an. Dort ist das Prinzip noch mal erklärt.

http://msdn.microsoft.com/de-de/library/8t3khw5f

0

In VBA werden die Umlaute als „Char“ verglichen, die deutlich weiter hinten im (erweiterten) ASCII-Code einsortiert sind … :-)

Rechtschreibetechnisch werden Umlaute in Excel – wie im Telefonbuch – als ae/oe/ue einsortiert.

Excel sortiert nach den vorgaben des menschlichen Verständnisse.

VBA hingegen vergleicht den CHAR-Wer von Ö und S. Da alle Umlaute in der ASCI Tabelle weit hinten stehen, ist Ö größer als S.

maxbreak 
Fragesteller
 05.12.2011, 23:26

Super, damit weis ich ja schon mal die Ursache.
Aber wie löse ich nun mein Problem möglichst elegant? Ich will in VBA das gleiche Ergebnis haben wie in Excel!?

0

Du kannst dir in VBA eine Hilfsspalte einrichten, in der du alle Umlaute durch az oz und sz ersetzt (dass "z" desshalb, damit alle Umlaute hinter das letzte a oder o sortiert werden). Nach dieser Spalte sortierst du, ansonsten wird sie für Anzeige und Druck ausgeblendet.

Was meinst du damit, dass ein Buchstabe größer ist als ein anderer? Du meinst damit wahrscheinlich die Zahlencode in Ascii. Danach kommen die Codes des normalen Alphabetes nacheinander, die Umlaute liegen in anderen Bereichen.
Beim Sortieren hingegen wird ganz normal lnach der Rechtschreibung sortiert. Danach komme Ö eben mal direkt nach O.