Seite 1 von 2

Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Fr, 13.06.2008 09:05
von WorstCases
Hallo Leute,

folgendes Problem habe ich:

Ich habe eine Tabelle mit Zahlenwerten "Entfernung".
Jetzt würde ich diese Zahlen gerne in einer anderen Spalte, sortiert nach Größe auflisten.
Ich habe mal einen Screenshot der Tabelle hochgeladen und hier auch nochmal ein Beispiel:

Entfernung:
111
3
44

Auflistung sortiert nach Größe:
3
44
111

Aktualisieren sollte sich sie Auflistung, sobald ich einen beliebigen Wert in der Spalte "Entfernung" ändert.
Wichtig: Ich möchte nicht die Spalten mit den ursprünglchen Zahlen "Entfernung" sortieren. Ich benötige eine zusätzliche Spalte mit der Auflistung nach Größe.
Lässt sich das realisieren?

Für eure Hilfe wäre ich sehr dankbar.
Gruß.
WorstCases

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Fr, 13.06.2008 09:34
von AhQ
Guten Morgen,

Karolus hat das hier mal wunderbar gelöst.

Viele Grüße
AhQ

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Fr, 13.06.2008 10:25
von Gert Seler
Hallo,
Zelle C5 eine 1 schreiben. In Zelle C6 die Formel :=WENN($B6<>"";$C5+1;""). Formel nach unten kopieren, gemischte Bezüge beachten.
In Zelle D5 folgende Formel eintragen :=KGRÖSSTE($B$5:$B$14;$C5)
Nach unten kopieren und "absolute" & "gemischte" Bezüge beachten.

So sollte es funktionieren.

mfg
Gert

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Fr, 13.06.2008 21:20
von WorstCases
Hallo und Danke für die schnellen Tipps.

Ich habe mich für den Code aus dem Link von AhQ entschieden. Aber ich habe da ein Verständnisproblem.
Code aus dem Link:

Code: Alles auswählen

als Matrixformel :
=KKLEINSTE(A$2:A$8;ZEILE(A1:A7)) mit strg+shift+enter abschliessen
Wenn ich das richtig verstehe, legt A$2:A$8 den Bereich fest, von wo die Daten eingelesen werden sollen. Was bedeutet aber A1:A7? Ich dachte erst, das wäre der Bereich für die Daten-Ausgabe. Aber falls der Code oben nicht falsch ist, wüden dann die Daten ja dort ausgegeben werden, wo sie eingelesen werden. Aber bedinnend eine Zeile weiter oben.

Der Code für meine Beispieltabelle sieht so aus: Zumindest der Anfang sollte richtig sein, oder?

Code: Alles auswählen

=KKLEINSTE(B$5:B$14;ZEILE(D5:D14)) 
Ich habe einen Screenshot mit meinem Versuch angehängt. Komich ist, dass einige Zahlen sortiert angezeigt werden, aber nicht alle. In einigen Ausgabefeldern werden nur "###" angezeit.

Kann mir mal bitte jemand auf die Sprünge helfen?

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Fr, 13.06.2008 22:27
von chrk
Hallo,
WorstCases hat geschrieben: Wenn ich das richtig verstehe, legt A$2:A$8 den Bereich fest, von wo die Daten eingelesen werden sollen. Was bedeutet aber A1:A7? Ich dachte erst, das wäre der Bereich für die Daten-Ausgabe. Aber falls der Code oben nicht falsch ist, wüden dann die Daten ja dort ausgegeben werden, wo sie eingelesen werden. Aber bedinnend eine Zeile weiter oben.
Das heißt ZEILE(A1:A7), und den Funktionsnamen hast Du ja in Deiner Formel unten richtig eingesetzt. Die Funktion gibt in der Matrixformel den jeweiligen Rang zurück, in dem es Zeile für Zeile die Zeilennummern 1-7 einsetzt.
Der Code für meine Beispieltabelle sieht so aus: Zumindest der Anfang sollte richtig sein, oder?

Code: Alles auswählen

=KKLEINSTE(B$5:B$14;ZEILE(D5:D14)) 
Ich habe einen Screenshot mit meinem Versuch angehängt. Komich ist, dass einige Zahlen sortiert angezeigt werden, aber nicht alle. In einigen Ausgabefeldern werden nur "###" angezeit.

Kann mir mal bitte jemand auf die Sprünge helfen?
Das '###' heißt, das die Spalte zu schmal ist, den Zellinhalt anzuzeigen. In Deinem Fall steht da nämlich die Fehlerausgabe '#Wert', weil da höhere Ränge stehen, als die Anzahl der Werte in der Liste: Die Zeilen 5-14 geben genau diese Ränge zurück. Deshalb siehst Du im Screenshot in der sortierten Liste auch erst die Zahlen ab Rang 5. Du müsstest einen Offset berechnen, indem Du die Zeilennummer oberhalb der Liste subtrahierst:

Code: Alles auswählen

=KKLEINSTE(B$5:B$14;ZEILE(D5:D14)-4)
Eingabe als Matrixformel nicht vergessen.

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Fr, 13.06.2008 23:03
von balu
Hallo WorstCases,

oder Du nimmst als alternative folgende Formel

Code: Alles auswählen

=KKLEINSTE(B$5:B$14;ZEILE(B1:B10))
 
strg+shift+enter nicht vergessen. Dann braucht man nämlich die Formel nicht von Hand runterkopieren. Wenn man es trotzdem macht, kommt das gleiche ergebniss dabei raus.

Gruß
balu

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Fr, 13.06.2008 23:14
von WorstCases
Wow! Jetzt funktioniert's tatsächlich.

Aber ich würde gerne noch verstenen, warum.

Nochmal am Beispiel von meinem Code:

Code: Alles auswählen

=KKLEINSTE(B$5:B$14;ZEILE(D5:D14)) 
Ich sage doch in dem ode B5:B14 - deklariere also, dass er bei B5 anfängt und B14 aufhört.
Also warum -4? Das geht mir nicht in den Kopf...

Kann mir bitte mal jemand kurz erläutern, was diese obere Codezeile beschreibt (von links nach rechts)?
Ich gehe wie gesagt davon aus, dass ich links die Datenquelle beschreibe und im rechten Teil die Datenausgabe. Richtig oder falsch?

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Sa, 14.06.2008 00:09
von AhQ
=KKLEINSTE(B$5:B$14;ZEILE(D5:D14))

Also, fangen wir an: KKleinste ist die Formel, sie sucht im Bereich B$5:B$14 den Wert, der an der soviel kleinster Stelle steht, wie der Parameter nach dem Semikolon angibt. Wenn da 1 stünde, würde der Kleinste gesucht, bei einer 2 der 2.Kleinste etc.

Zeile() gibt Dir einfach wieder, in welcher Zeile Du dich befindest. Recht unspektakulär eigentlich. Da Du aber mit Deiner Aufgabenstellung den kleinsten Wert zuerst sucht und die Formel, Deinem Bild nach zu schließen, in D5 steht, würde an der Stelle ein ZEILE() den WERT 5 wiedergeben. daher hat Dir chrk das "-4" noch ans Herz gelegt, damit Du da letztlich den Wert 1 stehen hast (und eine Zeile drunter dann den Wert 2 etc).

Jetzt willst Du aber einen ganzen Bereich haben. Da kannst Du entweder die Formel =KKLEINSTE(B$5:B$14;ZEILE()-4)
in D5 schreiben und dann soweit ziehen, wie Du es brauchst, oder Du nimmst die Formel die oben steht und schließt die mit Strg+Shift+Enter ab.

Damit sagst Du Calc eigentlich nur, daß es die Formel im Bereich D5 bis D14 anwenden soll. Das nennt sich dann Matrix-Formel oder Array-Formel und ist, wenn man es mal kapiert hat, was wunderbares. Wenn Du dich mal in das Thema bißchen vetiefen willst, dann empfehl ich Dir folgende Seite. Da wird das ganze Thema sehr anschaulich an Beispielen erklärt.

Ist es jetzt klarer?

Viele Grüße
AhQ

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Sa, 14.06.2008 00:10
von balu
Hallo WorstCases,

da hatte ich eben schon eine antwort verfasst, als ich sah das Christian schneller war. Und dabei dachte ich das man es versteht was da geschieht. Na dann mach ich das ganze doch noch.

Also.
Was sagt denn uns die Hilfe zu KKLEINSTE?
OpenOffice.org Hilfe hat geschrieben: KKLEINSTE
Berechnet den k-kleinsten Wert einer Datengruppe.

Syntax

KKLEINSTE (Daten; Rang K)
Daten ist die Matrix der Daten in der Stichprobe.
Rang K ist der Rang des Wertes.
Daten ist klar, der Bereich von B$5:B$14
Rang ist die Wertigkeit der Reihenfolge. Mit anderen Worten. Der Kleinste Rang erhält die 1, der nächst höhere niedrige erhält die 2, der nächste die 3, 4 ,5 ....usw. Das bedeutet, wenn ich von 10 - 20 die Kleinste haben möchte, dann gebe ich als Rang die 1 ein. Und erhalte als ergebnis die 10. Wenn ich jetzt aber aus dem gleichen Zahlenbereich den 4 ten Rang haben möchte, gebe ich die 4 ein und bekomme 13 raus.
Und in deinem Beispiel wäre das wie folgt.
Rang 1 ergebnis gleich 1
Rang 4 ergebnis gleich 10

Würde man jetzt aber den Rang direkt eingeben, und die Formel nach unten kopieren, dann bekäme man immer die gleiche Zahl dabei raus.
Und warum?
Aus dem einfachen grund, weil der Rang sich nicht ändert. Das muss er aber machen, denn wenn wir schon den Kleinsten Wert haben, dann wollen wir als nächstes ja den zweitkleinsten haben. Also muss eine Methode daher, die den Rangzähler um eins erhöht. Und dies macht ZEILE(B1:B10).
Zur veranschaulichung gib irgendwo in einem leeren tabellenbereich diese Formel ein.

Code: Alles auswählen

=ZEILE(B1:B10)
Und jetzt kopiere sie 20 Zeilen nach unten. Und was siehst Du?

Richtig! :D

Die Zahlen 1 - 20 schön untereinander aufgelistet. Und dadurch wird unser Rangindex automatisch weiter erhöht.
Jetzt gibst Du meine Formel (nix gegen dich Christian :wink: )

Code: Alles auswählen

=KKLEINSTE(B$5:B$14;ZEILE(B1:B10))
 
z.B. in C1 ein, und kopierst sie 10 Zeilen nach unten. Und schon ist deine Liste sortiert.

Wenn Du die Formel aber mit strg+shift+enter, also als Matrixformel eingibst, dann wirst Du sehen das sich der Bereich bei ZEILE nicht ändert. Was aber bei dem von Hand runterkopieren der Fall ist. Und warum sich die Matrixformel so verhält, kann ich auch nicht so recht erklären. Das müsste jemand anderer machen, weil ich davon keine Ahnung habe. Ich weiss ja nicht mal wie man eine erstellte und funktionierende Matrixformel im nachhinein editieren kann. Weil ich das noch nie gemacht habe.

Ich hoffe dir ist jetzt der ganze Ablauf etwas verständlicher geworden. :D


Bild
balu

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Sa, 14.06.2008 08:27
von chrk
balu hat geschrieben:Jetzt gibst Du meine Formel (nix gegen dich Christian :wink: )

Code: Alles auswählen

=KKLEINSTE(B$5:B$14;ZEILE(B1:B10))
Gar kein Problem, ich arbeite nur lieber mit dem Offset, weil ich da die Zeilennummer oberhalb (hier: 4) ablesenkann, anstatt die Zeilen im Array zu zählen :wink:

"Wenn Du die Formel aber mit strg+shift+enter, also als Matrixformel eingibst, dann wirst Du sehen das sich der Bereich bei ZEILE nicht ändert. Was aber bei dem von Hand runterkopieren der Fall ist. Und warum sich die Matrixformel so verhält, kann ich auch nicht so recht erklären. Das müsste jemand anderer machen, weil ich davon keine Ahnung habe."

Das ist ja der Trick der Matrixformel. Jede Zeile in der Matrix erhält einen internen Index. Du gibst ja in diese Matrixformel einen Bereich ein, wo die Formel einen einen einzelnen Wert erwartet, und das als relativen Bezug. Aus diesem Bereich nimmt sich jetzt die Matrixformel jeweils den zum Index der Zeile gehörenden Wert/Zellbezug.

"Ich weiss ja nicht mal wie man eine erstellte und funktionierende Matrixformel im nachhinein editieren kann. Weil ich das noch nie gemacht habe."

Du musst die ganze Matrix markieren, in der die Formel steht, dann bearbeiten und anschließend wieder mit <strg>+<shift>+<enter> als Matrix abschließen.

[edit]Jetzt bin ich es aber leid, die Forensoftware macht mir immer die Quotes kaputt, deshalb habe ich sie nach dem fünften Editieren des Beitrags in Anführungszeichen gesetzt!

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Sa, 14.06.2008 08:57
von chrk
Hallo WorstCases,
Du hast Dich im Thread vertan. Das hast Du in Re: Zahlen aus Spalte sortiert in andere Spalte kopieren geschrieben:
WorstCases hat geschrieben:Klasse! Jetzt hab ichs verstanden.

Vielen Dank für die ausführlichen Erklärungen!

Wo das jetzt funktioniet würde ich die Formel gerne noch wie folgt erweitern. In Spalte B gibt es zwei ereiche, die ich gerne nach Größe sortieren möchte.

Beispiel anhand meines jetzt funktionsfähigen Codes:

Code: Alles auswählen

=KKLEINSTE(B$5:B$12;ZEILE(B1:B8))
Dieser Code liest jetzt die Zeilen B5 bis B12 ein. Weiter möchte ich in diesen Code noch enfügen, dass er auch die Zahlen aus den Zellen B15 bis B20 auflistet. Wie kann ich den Code entsprechend erweitern?
Du möchtest beide Bereiche in eine Liste sortieren? Als schnelle Lösung fällt mir dazu nur ein, beide Bereiche als einen zusammenhängenden zu behandeln, also $B5:$B20 und ZEILE(B1:B16) zu verwenden. Dann dürfen aber in den beiden Zellen zwischen den Bereichen keine Zahlen stehen, und Du müsstest damit leben, dass diese einen #Wert-Fehler am Ende der Liste produzieren. Ich bin mir nicht sicher, ob und wie man eine Mehrbereichsmatrix unterbringen kann, das wird alles sehr kompliziert, weil die anders ticken. - Das Zusammenspiel von Bereichsnummer und Index durchschaue ich da noch nicht ganz.

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Sa, 14.06.2008 10:00
von balu
Moin moin Leute,

@Christian
danke, jetzt hab ich das mit dem Matrixverhalten verstanden. :D

Zu dem Problem mit den Zitieren hier, könnte ich nur als tipp folgendes sagen.
Anstatt direkt am Zitatende, füge ich einen Zeilenumbruch ein und zusätzlich vor dem hier -> [/quote] noch ein leerzeichen ein. Auch bei der Code-Box [/code] mach ich das. Es ist wohl nicht immer der Fall das dies Funzt, aber ich fahre damit bis jetzt eigentlich recht gut. Bevor ich diesen Trick einsetze versuche ich es aber erst mal auf die normale weise. Und erst wenn das wieder alles durcheinander schmeißt, dann nehm ich den trick.


@WorstCases
Für deinen neuen Wunsch habe ich da rein zufälligerweise schon eine passende lösung parat.

Code: Alles auswählen

=WENN(ISTFEHL(KKLEINSTE(B$5:B$20;ZEILE()));"";KKLEINSTE(B$5:B$20;ZEILE()))
 
Diese Formel kannst Du aber nicht als Matrixformel einsetzen. Du musst sie von Hand nach unten kopieren.
An dieser Stelle geht ein "Danke schön" an Karolus. Denn er hatte sie in diesem Beitrag ausgefüllte Zellen automatisch suchen veröffentlicht.
Du kanst sie so wie sie ist irgendwo einsetzen, und deine Daten aus den Beiden Bereichen werden schön sortiert ausgegeben. Und es spielt auch keine Rolle ob in den Zellen B13 und B14 Text drin steht, oder gar nichts. Nur eins darf nicht sein, es dürfen in den beiden Zellen keine weiteren Zahlen stehen. Denn sonst funktioniert das nicht so wie Du es haben willst, und es müsste eine andere lösung daher.

Ich hoffe, das ist das was Du willst :wink:

Viel Spaß, und viel erfolg :D

Gruß
balu

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Sa, 14.06.2008 14:46
von Gert Seler
Hallo Zusammen,
ich weiß ja nicht, warum es unbedingt eine Matrix_Formel sein soll, wenn es auch einfacher geht.
Ob ich nun KKLEINSTE oder KGRÖSSTE als Formel verwende, es bringt als oberstes Ergebnis nur die kleinste oder die größte Zahl.
Später hat man dann sein Matrix_Erlebnis" da der Tastaturschlüssel nicht am Monitor klebt.
Viel wichtiger erscheint es mir, das variable Bereiche mit : Einfügen ---->Namen .....>Festlegen einen Namen bekommen.
Denn wie heißt es so schön ein Name sagt mehr als 1000 Worte.

mfg
Gert

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: Sa, 14.06.2008 15:17
von balu
Hallo Gert,
Gert Seler hat geschrieben: ich weiß ja nicht, warum es unbedingt eine Matrix_Formel sein soll, wenn es auch einfacher geht.
Muss es ja auch nicht.
Aber wo ist denn dein Beweis dafür das es auch einfacher geht? Zeig ihn uns, deinen Beweis!


Gert Seler hat geschrieben: Ob ich nun KKLEINSTE oder KGRÖSSTE als Formel verwende, es bringt als oberstes Ergebnis nur die kleinste oder die größte Zahl.
Falsch!
Es ist davon abhängig welchen Wert der Rang hat.


Gert Seler hat geschrieben: Viel wichtiger erscheint es mir, das variable Bereiche mit : Einfügen ---->Namen .....>Festlegen einen Namen bekommen.
Die Wichtigkeit ergibt sich erst dann, wenn z.B. so eine kleine Formel sehr oft über sehr große Datenbereiche eingesetzt wird. Aber für nur einmal ist es NICHT zwingend, oder sehr wichtig.


Gert Seler hat geschrieben: Denn wie heißt es so schön ein Name sagt mehr als 1000 Worte.
Stimmt :wink:


Denk dran, wir warten auf deinen Beweis.


Gruß
balu

Re: Zellenbereiche m. Zahlen an anderer stelle sortiert aufliste

Verfasst: So, 15.06.2008 14:43
von Gert Seler
Hallo Balu.
erst einmal wünsch ich Dir und allen anderen einen schönen erholsamen Sonntag.
Thema : Beweis antreten
Es liegt mir fern, in irgendeinem Internetforum Beweisführungen einzubringen. Die ja wohl eher in einer juristischen Auseinandersetzung
verlangt werden.
Mir geht es darum, OpenOffice_Calc - Einsteigern den Einstieg in dieses Modul zu erleichtern.
Speziell die Formelsuche und deren Handhabung sind selbst in der OpenOffice-Hilfe nicht immer optimal erklärt oder bedürfen einer
Hilfestellung. Ich schreibe 1.):
Zelle C5 eine 1 schreiben. In Zelle C6 die Formel :=WENN($B6<>"";$C5+1;""). Formel nach unten kopieren, gemischte Bezüge beachten.
In Zelle D5 folgende Formel eintragen :=KGRÖSSTE($B$5:$B$14;$C5)
Nach unten kopieren und "absolute" & "gemischte" Bezüge beachten.

2.) :
Ob ich nun KKLEINSTE oder KGRÖSSTE als Formel verwende, es bringt als oberstes Ergebnis nur die kleinste oder die größte Zahl.
Das letztendlich die nachfolgenden Werte Ab- oder Aufsteigend sortiert sind, sieht der User ja selbst.
Dein Kommentar:
Falsch!
Es ist davon abhängig welchen Wert der Rang hat.
Mit dem letzten Satz kann ich nichts anfangen, bitte mal erklären.
Also Beweise sollten in diesem Forum generell nicht gefordert werden. Nur wenn eine Formel nicht das tut, was von Ihr verlangt wird.

mfg
Gert