ОК, если числовые данные в ваших строках включены Sheet1
, введите значение М в Sheet2!M1
и введите
=AVERAGE(LARGE(Sheet1!1:1, ROW(INDIRECT("1:"&M$1))))
в Sheet2!A1
. (Если ваши данные только, например, колонны G
через Z
, изменение Sheet1!1:1
к Sheet1!G1:Z1
.) Нажмите Ctrl+ Shift+, Enterчтобы создать формулу массива. Перетащите столько строк, сколько вам нужно, и все готово.
Объяснение:
&
является оператором конкатенации строк в Excel (и, как я слышал, Libre Office Calc очень похож на Excel), поэтому, еслиSheet2!M1
, скажем, 17, то"1:"&M$1
становится строковым значением"1:17"
.INDIRECT("1:17")
является областью, включающей строки1
через строки17
, иROW()
этого массива.
Это хитрость для создания значения массива, которое определяется данными времени выполнения.LARGE(Sheet1!1:1, )
это массив{ LARGE(Sheet1!1:1,1), LARGE(Sheet1!1:1,2), LARGE(Sheet1!1:1,3), …}
, который является самым большим членомSheet1!1:1
, вторым по величине,… и так далее, вплоть до 17-го.
Спасибо Тейлину, чей ответ на подобный вопрос я использовал для вдохновения.