von AhQ » Mo, 22.09.2008 18:18
Hallo,
es stellt sich grundsätzlich die Frage, ob für diese Sortieraktion nicht einfach markieren aller Spalten und dann die Sortierfunktion von Calc ausreichend sind...
Aber da ich vor längerer Zeit mir schon mal überlegt hab, wie man eigentlich eine automatische alphabetische Sortierung in Calc machen könnte, was das ein entter Aufhänger, meine Überlegungen mal auszuprobieren.
Ich hab jetzt in der Datei mal eine Sortierung nach den ersten 5 Buchstaben gemacht.
Die Grundidee ist ganz einfach. Teil() liefert mir immer einen kleinen Teil (in dem Beispiel jeweils nur einen Buchstaben) des Wortes. Diesen rechnet mir der Sverweis gleich in eine Zahl um. Da die Anzahl der Zahlen maximal zweistellig ist (begrenzt durch die Anzahl der Buchstaben des Alphabets...), die Sortierung aber gewichtet nach dem Auftauchen der Buchstaben sein muß (sprich ein A an erster Stelle ist wichtiger wie eins an 2. Stelle), müssen auch die Sverweis(Teil()) gewichtet werden. Das macht der Multiplikator in Zeile 1. Da, wie gesagt, die ermittelte Zahl maximal 2 Stellen hat, multiplizier ich die 5. Stelle mit eins und jede Stelle davor mit dem 100-fachen des nachfolgenden Multiplikator. So bekomm ich zwar recht große Zahlen, aber erstens ist das ja eigentlich egal und zweitens kann ich so ausschließen, daß ein Z mir den Wert des Buchstabens vor dem Z verfälscht. So bekomm ich für jedes Wort eine Summe der Werte der einzelnen Buchstaben je nach Stelle des Auftauchens. Eine kleine Fehlerschleife ( Länge(Wort)-Anzahl(BisherigeUmgerechneteBuchstaben) )fängt eine Fehlermeldung ab, falls das Wort weniger wie 5 Buchstaben hat. Sollte ein Wort die ersten 5 Buchstaben gleich sein, macht in der Summe() in Spalte G noch ein Zeile() den Wert eindeutig.
Spalte I sortiert mit Kkleinste() die Werte der Größe nach, Spalte J ermittelt das Wort.
Es stellt sich am Ende der Ausführung ernsthaft die Frage, ob nicht die Sortierfunktion das ganze einfacher erledigen würde...
Viele Grüße
AhQ
- Dateianhänge
-
- alphabetischeSortierung.ods
- (24.36 KiB) 95-mal heruntergeladen
Hallo,
es stellt sich grundsätzlich die Frage, ob für diese Sortieraktion nicht einfach markieren aller Spalten und dann die Sortierfunktion von Calc ausreichend sind...
Aber da ich vor längerer Zeit mir schon mal überlegt hab, wie man eigentlich eine automatische alphabetische Sortierung in Calc machen könnte, was das ein entter Aufhänger, meine Überlegungen mal auszuprobieren. :D
Ich hab jetzt in der Datei mal eine Sortierung nach den ersten 5 Buchstaben gemacht.
Die Grundidee ist ganz einfach. Teil() liefert mir immer einen kleinen Teil (in dem Beispiel jeweils nur einen Buchstaben) des Wortes. Diesen rechnet mir der Sverweis gleich in eine Zahl um. Da die Anzahl der Zahlen maximal zweistellig ist (begrenzt durch die Anzahl der Buchstaben des Alphabets...), die Sortierung aber gewichtet nach dem Auftauchen der Buchstaben sein muß (sprich ein A an erster Stelle ist wichtiger wie eins an 2. Stelle), müssen auch die Sverweis(Teil()) gewichtet werden. Das macht der Multiplikator in Zeile 1. Da, wie gesagt, die ermittelte Zahl maximal 2 Stellen hat, multiplizier ich die 5. Stelle mit eins und jede Stelle davor mit dem 100-fachen des nachfolgenden Multiplikator. So bekomm ich zwar recht große Zahlen, aber erstens ist das ja eigentlich egal und zweitens kann ich so ausschließen, daß ein Z mir den Wert des Buchstabens vor dem Z verfälscht. So bekomm ich für jedes Wort eine Summe der Werte der einzelnen Buchstaben je nach Stelle des Auftauchens. Eine kleine Fehlerschleife ( Länge(Wort)-Anzahl(BisherigeUmgerechneteBuchstaben) )fängt eine Fehlermeldung ab, falls das Wort weniger wie 5 Buchstaben hat. Sollte ein Wort die ersten 5 Buchstaben gleich sein, macht in der Summe() in Spalte G noch ein Zeile() den Wert eindeutig.
Spalte I sortiert mit Kkleinste() die Werte der Größe nach, Spalte J ermittelt das Wort.
Es stellt sich am Ende der Ausführung ernsthaft die Frage, ob nicht die Sortierfunktion das ganze einfacher erledigen würde...
Viele Grüße
AhQ