Wie erhält man den Durchschnitt der höheren M-Werte in N-Zellen?

409
Daniel Hernández

Ich habe eine Tabelle mit Werten in einer Matrix mit mehreren Zeilen. Für jede Reihe habe ich eine N Zahl. Ich möchte den Durchschnitt der M höheren Werte der Zeile berechnen. Mit M <N. Gibt es eine gemeinsame Funktion, um dies zu tun?

Wenn es keine solche Funktion gibt, kann ich sie mit den Python-Plugins für gnumeric oder dem Basis-Plugin für libreoffice hinzufügen.

0
Versuchen Sie, etwas klarer zu sagen, was Sie erreichen wollen - geben Sie vielleicht ein kleines Beispiel. peanut_butter vor 10 Jahren 0
Ist nicht genau die gleiche Frage, da wir vorher nicht wissen, wie viele Werte verwendet werden. In der vorherigen Frage ist explizit angegeben, dass die zu wählende Zellennummer 3 ist. Die Funktion, die ich brauche, enthält eine Reihe von Zellen und eine Anzahl M als Parameter. Zum Beispiel maverage (set, m). Daniel Hernández vor 10 Jahren 0
Möglicherweise verwandt: [Summe aus einer Serie mit dem höchsten N-Wert?] (Http://superuser.com/q/571915/53590) (Haftungsausschluss: Meine eigene Frage :)) a CVn vor 10 Jahren 0

1 Antwort auf die Frage

1
Scott

OK, wenn Ihre numerischen Daten in Zeilen stehen Sheet1, geben Sie Ihren M- Wert ein Sheet2!M1und 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  Gdurch  Z, ändern Sheet1!1:1zu 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). Wenn Sheet2!M1also 17 ist, "1:"&M$1wird der Stringwert "1:17".
  • INDIRECT("1:17")ist die Region, die Zeile  1durch Zeile umfasst  17, und
  • ROW()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 von Sheet1!1:1, das zweitgrößte,… usw. bis zum 17. ist.

Danke an teylyn, dessen Antwort auf die ähnliche Frage ich als Inspiration verwendete.