AW: zum schnelleren Nachstellen ...
24.01.2023 13:20:39
ChrisL
Hi Werner
Kann ich bestätigen. Ist auch in XL365 so. Soweit ich sehe wird strickt nach ASCII Zeichennummer sortiert.
Nummer vom ersten Zeichen = Character.ToNumber(Text.Start([Spalte1], 1))
Als Umgehungslösung fällt mir sinngemäss auch nur ein Ersatz der Zeichen ein. Wenn man vorher auf Kleinbuchstaben (Text.Lower umstellt, hat man weniger zu ersetzen).
Schön verpacken liesse sich die Angelegenheit in einer UDF.
= fxSortIndexHinzufuegen(TabelleQuelle,Spaltennamen)
konkret
= fxSortIndexHinzufuegen(Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],"Obst&Gemüse")
fxSortIndexHinzufuegen
(q as table, SpaltenNamen as text) =>
let
IndexHinzufuegen = Table.AddIndexColumn(q, "Index1", 1, 1),
Hilfsspalte = Table.AddColumn(IndexHinzufuegen, "Hilfsspalte", each Text.Lower(Record.Field(_,SpaltenNamen))),
Replace1 = Table.ReplaceValue(Hilfsspalte,"ä","a",Replacer.ReplaceText,{"Hilfsspalte"}),
Replace2 = Table.ReplaceValue(Replace1,"ü","u",Replacer.ReplaceText,{"Hilfsspalte"}),
Replace3 = Table.ReplaceValue(Replace2,"ö","o",Replacer.ReplaceText,{"Hilfsspalte"}),
Replace4 = Table.ReplaceValue(Replace3,"è","e",Replacer.ReplaceText,{"Hilfsspalte"}),
Replace5 = Table.ReplaceValue(Replace4,"à","a",Replacer.ReplaceText,{"Hilfsspalte"}),
Replace6 = Table.ReplaceValue(Replace5,"é","e",Replacer.ReplaceText,{"Hilfsspalte"}),
TabelleSortiert = Table.Sort(Replace6,{"Hilfsspalte", Order.Ascending}),
SortIndex = Table.AddIndexColumn(TabelleSortiert, "Sort-Index " & SpaltenNamen, 1, 1),
TabelleSortRueckgaengig = Table.Sort(SortIndex,{"Index1", Order.Ascending}),
Aufraeumen = Table.RemoveColumns(TabelleSortRueckgaengig, {"Index1","Hilfsspalte"})
in
Aufraeumen
Als Ergebnis kommt die gleiche Tabelle raus, aber mit einer zusätzlichen Spalte "Sort-Index".
cu
Chris