Формула на Excel: Усреднете последните 3 числови стойности -

Обща формула

(=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(data),ROW(data)),(1,2,3)),ROW(data), data)))

Обобщение

За да осредните последните 3 числови стойности в диапазон, можете да използвате формула на масив, базирана на комбинация от функции, за да подадете последните n числови стойности във функцията AVERAGE. В показания пример формулата в D6 е:

(=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(data),ROW(data)),(1,2,3)), ROW(data), data)))

където "данни" е наименованият диапазон B5: B13.

Забележка: това е формула на масив и трябва да се въведе с control + shift + enter.

Обяснение

Функцията AVERAGE ще изчисли средната стойност на числата, представени в масив, така че почти цялата работа в тази формула е да генерира масив от последните 3 числови стойности в диапазон. Работейки отвътре навън, функцията IF се използва за "филтриране" на числови стойности:

IF(ISNUMBER(data),ROW(data))

Функцията ISNUMBER връща TRUE за числови стойности и FALSE за други стойности (включително заготовки), а функцията ROW връща номера на редове, така че резултатът от тази операция е номера на редове в масив, които съответстват на числови записи:

(5;6;FALSE;8;9;10;FALSE;12;13)

Този масив влиза във функцията LARGE с константата на масива (1,2,3) за k. LARGE автоматично игнорира FALSE стойностите и връща масив с най-големите 3 числа, които съответстват на последните 3 реда с числови стойности:

(13,12,10)

Този масив влиза във функцията LOOKUP като стойност за търсене. Търсещият масив се предоставя от функцията ROW, а резултатният масив е наименованият диапазон "data":

LOOKUP((13,12,10), ROW(data), data))

След това LOOKUP връща масив, съдържащ съответните стойности в "data", който се подава в AVERAGE:

=AVERAGE((100,92,90))

Обработка на по-малко стойности

Ако броят на числовите стойности падне под 3, тази формула ще върне грешката #NUM, тъй като LARGE няма да може да върне 3 стойности, както е поискано. Един от начините да се справите с това е да замените твърдо кодираната константа на масива (1,2,3) с динамичен масив, създаден с помощта на INDIRECT по следния начин:

ROW(INDIRECT("1:"&MIN(3,COUNT(data))))

Тук MIN се използва за задаване на горната граница на масива на 3 или на действителния брой на числовите стойности, което от двете е по-малко.

Забележка: Сблъсках се с този умен подход на chandoo.org в отговор на Sajan на подобен въпрос.

Интересни статии...