Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PQ-Sortierproblem bei vorh. Umlauten ...

PQ-Sortierproblem bei vorh. Umlauten ...
24.01.2023 10:21:22
neopa
Hallo PQ-Profis,
... habe eben festgestellt, dass in PQ in meiner Excelversion Texte mit Umlauten diese nicht wie im deutschen Excel üblich einsortiert werden. So wird aktuell z.B. "Äpfel" nach "Zucchini" aufwärts einsortiert. Momentan kann ich mir da nur behelfen, dass ich die Umlaute entsprechend auswechsle dann sortiere und danach zurück wechsele. Ist das in neueren XL-Versionen auch noch so? Gibt es einen andere/einfachere Lösungsart für dieses (Teil-)Problemchen?
Gruß Werner
.. , - ...

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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
Anzeige
AW: dazu nun nachgefragt ...
24.01.2023 13:45:57
neopa
Hallo Chris,
... aber zuvor Dir danke für Deinen Lösungsvorschlag.
Mit PQ-UDFs muss ich mich noch etwas auseinandersetzen. Meine allgemeine Frage vorab. Kann man PQ-UDF solche (genau genommen brauch ich/man ja zwei. Dies weil die Texte ja am Schluss normalerweise auch wieder im Original ausgegeben werden sollen) auch Datei unabhängig bereitstellen?
Gruß Werner
.. , - ...
AW: dazu nun nachgefragt ...
24.01.2023 14:08:16
ChrisL
Hi Werner
Meines Wissens nicht. Die PQ-Funktion ist an die Datei gebunden.
Man kann die Funktion natürlich mehrfach innerhalb der gleichen Datei verwenden. Beispielsweise wenn man einen Sort-Index für mehrere Spalten benötigt.
let
    Quelle1 = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    QuelleSort1 = fxSortIndexHinzufuegen(Quelle1,"Spalte1"),
    QuelleSort2 = fxSortIndexHinzufuegen(QuelleSort1,"Spalte2")
in
    QuelleSort2
Zudem hier noch eine kleine Nachkorrektur der Funktion. Mir ist aufgefallen, dass gemischte Werte (Text und Zahl) zum Fehler führen. Mit Text.From() erfolgt eine Typenkonvertierung zum Text-String.
(q as table, SpaltenNamen as text) =>
let
    IndexHinzufuegen = Table.AddIndexColumn(q, "Index1", 1, 1),
    Hilfsspalte = Table.AddColumn(IndexHinzufuegen, "Hilfsspalte", each Text.Lower(Text.From(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
cu
Chris
Anzeige
AW: schade ...
24.01.2023 14:35:30
neopa
Hallo Chris,
... aber Dir danke für Deine Zusatzinformationen.
Gruß Werner
.. , - ...
ist auch in 365 so.
24.01.2023 12:31:47
Rudi
Hallo Werner,
eine einfache Lösung habe ich nicht. Mache nur wenig mit PQ.
Gruß
Rudi
AW: hatte anderes erhofft ...
24.01.2023 13:27:29
neopa
Hallo Rudi,
... doch danke Dir für Deine Information. Dann bleibt mir wohl nur das Hin- und Her-Ersetzen :-(
Gruß Werner
.. , - ...
AW: die hier getroffene Aussage ...
25.01.2023 17:37:57
neopa
Hallo,
... von mir war falsch, wie ich schon gestern festgestellt hatte. ich muss grundsätzlich die Originaldaten so belassen wie sie sind und wie Chris vorgegeben hat, in einer Kopie die notwendigen Auswechslung vornehmen und dann nur nach diesen sortieren.
Gruß Werner
.. , - ...
Anzeige
Auch mit =SORTIEREN() strittig
25.01.2023 16:54:26
lupo1
Aus
Apfel
Äpfel
Aerzte
Zucchini

wird mit =SORTIEREN(A1:A4)
Aerzte
Apfel
Äpfel
Zucchini
ich hätte aber möglicherweise gern
Äpfel
Aerzte
Apfel
Zucchini
mit =SORTIERENNACH(A1:A4;WECHSELN(WECHSELN(WECHSELN(WECHSELN(KLEIN(A1:A4);"ä";"ae");"ö";"oe");"ü";"ue");"ß";"ss")) (Telefonbuch)
Danke, Anregung ChrisL.
AW: Auch mit =SORTIEREN() strittig
25.01.2023 18:10:46
ChrisL
Hi lupo
Danke für die Anregung. Bei der Erstellung der Lösung habe ich mich tatsächlich auch gefragt, welche Sortierreihenfolge denn nun eigentlich "korrekt" wäre. Ein richtig oder falsch gibt es wahrscheinlich nicht. Was mich eigentlich noch mehr beschäftigt hat ist, dass bei einer Gleichstellung von a und ä theoretisch auch eine Sortierung wie z.B.
apfel
äpfel
apfel
apfel
äpfel
resultieren könnte.
Könnte man z.B. lösen, indem man
a in aa
ä in ab
à in ac
wechselt.
Aber als Pragmatiker war mir die Gleichstellung für den Moment gut genug. :)
cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige