Media delle ultime 7 celle non vuote non vuote in Fogli Google


Risposte:


6

Ecco un approccio:

=average(indirect("D" & iferror(large(filter(row(D7:D), len(D7:D)), 7), row(D7)) & ":D"))

Spiegazione:

  • filter(row(D7:D), len(D7:D)) restituisce un array costituito dai numeri di riga delle voci non vuote nell'intervallo indicato.
  • large(..., 7) seleziona il settimo numero più grande da questo array: questo è il numero di riga da cui iniziare la media.
  • iferror(..., row(D7))è una protezione nel caso in cui il tuo intervallo abbia meno di 7 voci non vuote: in questo caso, la media inizierà con D7. Avrei potuto semplicemente inserire "7" anziché row(D7), ma row(D7)rendere la formula più portatile nel caso in cui decidessi di copiarla altrove.
  • indirect("D" & ... & ":D")costituisce l'intervallo per la media, ad esempio, D9:Dse l'output del calcolo precedente era 9.
  • Infine, averagefa la media. Puoi inserire anche altre funzioni aggregate qui.

funziona e aggiorna alle nuove modifiche!
Spongebob Squarepants,

Grazie, ma ora penso che la risposta di JPV dovrebbe essere quella accettata: è più semplice e semanticamente naturale.

non si è aggiornato correttamente per me, ho pensato che fosse anche più facile ma una volta aggiunti più numeri non ha funzionato.
Spongebob Squarepants

6

TL; DR

=AVERAGE(OFFSET(A:A;COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1;0))

Esempio

inserisci qui la descrizione dell'immagine

Spiegazione

  • Innanzitutto contiamo quanti numeri sono nella riga A con =COUNT(A:A). Le celle contenenti testo non verranno conteggiate. Il nostro esempio ci darebbe9
  • Da questo numero sottraiamo 7 in quanto si desidera che la media degli ultimi 7 valori: =COUNT(A:A)-7. Questo ci darà a 2.
  • Ora usiamo la funzione offset per ottenere un intervallo di una colonna completa, ma con un offset di 2 celle, il che significa effettivamente che rimane solo una parte di una colonna con esattamente 7 valori rimanenti

    Immagina una colonna senza celle vuote prima della prima cella con valori. Quindi potrebbe apparire un esempio semplificato =OFFSET(A:A; COUNT(A:A)-7 ;0). Ma questo non funzionerà non appena la colonna inizia con celle vuote come mostrato nella figura sopra

  • Ora dobbiamo estendere il nostro offset dal numero di celle vuote. Ciò non significa che contiamo tutti i valori vuoti in una riga. Solo quelli prima della prima cella non vuota.

    Puoi contarli =MATCH(TRUE;INDEX(A:A<>0);0)-1e ottenere 6come risultato o il nostro esempio

    Ora modifichiamo la nostra funzione offset e aggiungiamo questo conteggio per ottenere l'intervallo corretto contenente solo 7 valori
    OFFSET(A:A; COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1 ;0)

    inserisci qui la descrizione dell'immagine

  • Come ultimo passo calcoliamo la media di questo intervallo. Il nostro esempio ci darebbe 4 come risultato poiché la media di 1,2,3,4,5,6,7 è 4.
    =AVERAGE(OFFSET(A:A;COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1;0))


Risposta eccezionale.
Ale

ha funzionato bene, ma una volta aggiunta un'altra cella, non si è aggiornato correttamente?
Spongebob Squarepants,

2

Ancora un altro modo:

=AVERAGE(ARRAY_CONSTRAIN(SORT(FILTER(A:A, ISNUMBER(A:A)), 1, 1), 7, 1))

explantion:

  1. filtrare tutti i valori numerici
  2. capovolgere la colonna (in modo che gli ultimi valori siano sopra) usando sort ()
  3. limitare l'output di quella colonna a 7 righe (usando ARRAY_CONSTRAIN)
  4. Prendi la media ...

EDIT: mi dispiace per l'incomprensione. Quanto sopra fa una media dei 7 valori PIÙ GRANDI, non degli ultimi 7 valori in una colonna. In media gli ultimi 7 valori La soluzione di Normal Human è ottima. Un modo alternativo con meno funzioni sarebbe usare QUERY ()

Supponendo che i dati numerici nella colonna A, prova:

=AVERAGE(QUERY(ARRAYFORMULA({ROW(A:A),A:A}),"select Col2 where Col2 is not null order by Col1 desc limit 7", 0))

0

=AVERAGE(IFERROR(QUERY(D7:D, 
 "where D is not null 
  offset "&COUNTA(QUERY(D7:D, "where D is not null", 0)) - 7, 0)))

0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.