OK, wenn Ihre numerischen Daten in Zeilen stehen Sheet1
, geben Sie Ihren M- Wert ein Sheet2!M1
und geben Sie ein
=AVERAGE(LARGE(Sheet1!1:1, ROW(INDIRECT("1:"&M$1))))
in Sheet2!A1
. (Wenn Ihre Daten sind nur in zum Beispiel Spalt G
durch Z
, ändern Sheet1!1:1
zu Sheet1!G1:Z1
.) Drücken Sie Ctrl+ Shift+ Entereine Matrixformel erstellen. Ziehen Sie so viele Zeilen nach unten wie nötig, und Sie sollten fertig sein.
Erläuterung:
&
ist der String-Verkettungsoperator in Excel (und Libre Office Calc ist, wie ich gehört habe, sehr ähnlich wie Excel). WennSheet2!M1
also 17 ist,"1:"&M$1
wird der Stringwert"1:17"
.INDIRECT("1:17")
ist die Region, die Zeile1
durch Zeile umfasst17
, undROW()
davon ist das Array.
Dies ist ein Trick, um einen Array-Wert zu erstellen, der von Laufzeitdaten angegeben wird.LARGE(Sheet1!1:1, )
ist das Array{ LARGE(Sheet1!1:1,1), LARGE(Sheet1!1:1,2), LARGE(Sheet1!1:1,3), …}
, das das größte Mitglied vonSheet1!1:1
, das zweitgrößte,… usw. bis zum 17. ist.
Danke an teylyn, dessen Antwort auf die ähnliche Frage ich als Inspiration verwendete.