У меня есть таблица со значениями в матрице с несколькими строками. Для каждой строки у меня есть N номеров. Я хочу рассчитать среднее значение M для более высоких значений строки. С М <Н. Есть ли общая функция для этого?

Если такой функции нет, я полагаю, что могу добавить ее с помощью плагинов Python для gnumeric или базового плагина для libreoffice.

1 ответ1

1

Хорошо, если ваши числовые данные находятся в строках на Sheet1 , введите значение М в Sheet2!M1 и введите

=AVERAGE(LARGE(Sheet1!1:1, ROW(INDIRECT("1:"&M$1))))

в Sheet2!A1 .  (Если ваши данные находятся, например, только в столбцах с G по Z , измените Sheet1!1: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() этого - массив {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} .
    Это хитрость для создания значения массива, которое определяется данными времени выполнения.
  • LARGE(Sheet1!1:1, {1…17}) - это массив { LARGE(Sheet1!1:1,1), LARGE(Sheet1!1:1,2), LARGE(Sheet1!1:1,3), …} , который является крупнейшим участником Sheet1!1:1 , второй по величине,… и так далее, вплоть до 17-го.

Спасибо Тейлину, чей ответ на подобный вопрос я использовал для вдохновения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .