OK, se os dados numéricos de dados estiverem em linhas em Sheet1 , insira seu valor M em Sheet2!M1 e digite
=AVERAGE(LARGE(Sheet1!1:1, ROW(INDIRECT("1:"&M$1))))
em Sheet2!A1 . (Se os dados estiverem apenas em, por exemplo, Colunas G a Z , altere Sheet1!1:1 para Sheet1!G1:Z1 .) Pressione Ctrl + Deslocamento + < kbd> Digite para criar uma fórmula de matriz. Arraste quantas linhas precisar e você deve terminar.
Explicação:
-
&é o operador de concatenação de strings no Excel (e, pelo que ouvi, o Libre Office Calc é muito semelhante ao Excel), assim, seSheet2!M1for, digamos, 17, então"1:"&M$1se tornará o valor da string"1:17". -
INDIRECT("1:17")é a região que compreende a linha1até a linha17e -
ROW()disso é o array{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}.
Este é um truque para criar um valor de matriz especificado por dados de tempo de execução. -
LARGE(Sheet1!1:1, {1…17})é a matriz{ LARGE(Sheet1!1:1,1), LARGE(Sheet1!1:1,2), LARGE(Sheet1!1:1,3), …}, que é o maior membro deSheet1!1:1, o segundo maior,… e assim por diante, até o dia 17.
Obrigado ao teylyn, cuja resposta ao pergunta semelhante eu usei para inspiração.