Excel képlet: Átlagolja az utolsó 3 numerikus értéket

Általános képlet

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

Összegzés

A tartomány utolsó 3 numerikus értékének átlagolásához a függvények kombinációján alapuló tömbképletet használhatja az utolsó n numerikus értéknek az ÁTLAG függvénybe történő bevitelére. A bemutatott példában a D6 képlete a következő:

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

ahol az "adat" a B5: B13 elnevezett tartomány.

Megjegyzés: ez egy tömbképlet, amelyet a control + shift + enter billentyűkombinációval kell megadni.

Magyarázat

Az ÁTLAG függvény kiszámítja a tömbben megjelenített számok átlagát, így ebben a képletben szinte az összes munka egy tartomány utolsó 3 numerikus értékének tömbjének létrehozása. Belülről kifelé haladva az IF függvény segítségével numerikus értékeket "szűrhet":

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

Az ISNUMBER függvény a TRUE értéket adja vissza a numerikus értékeknél, a FALSE értéket pedig az egyéb értékeknél (beleértve az üreseket is), a ROW függvény pedig a sorok számát adja vissza, így ennek a műveletnek az eredménye egy tömb sorszám, amely megfelel a numerikus bejegyzéseknek:

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

Ez a tömb belemegy a LARGE függvénybe a k tömb konstansával (1,2,3). A LARGE automatikusan figyelmen kívül hagyja a FALSE értékeket, és egy olyan tömböt ad vissza, amelynek a legnagyobb 3 száma van, amelyek megfelelnek az utolsó 3 sornak numerikus értékekkel:

(13,12,10)

Ez a tömb a LOOKUP függvénybe kerül keresési értékként. A keresési tömböt a ROW függvény biztosítja, és az eredménytömb az elnevezett "data" tartomány:

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

A LOOKUP ezután egy tömböt ad vissza, amely az "adatok" mezőben tartalmazza a megfelelő értékeket, és amelyet az ÁTLAG:

=AVERAGE((100,92,90))

Kevesebb érték kezelése

Ha a numerikus értékek száma 3 alá csökken, ez a képlet a #NUM hibát adja vissza, mivel a LARGE nem lesz képes 3 értéket visszaadni a kért módon. Ennek egyik módja az, hogy a keményen kódolt tömbállandót (1,2,3) lecseréljük az INDIRECT használatával létrehozott dinamikus tömbre, mint ez:

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

Itt a MIN a tömb felső határának 3-ra vagy a numerikus értékek tényleges számának beállítására szolgál, amelyik kisebb.

Megjegyzés: Szembesültem ezzel az okos megközelítéssel a chandoo.org oldalon, Sajan válaszában egy hasonló kérdésre.

érdekes cikkek...