di CANAPONE » 03/04/12 18:57
Ciao a tutti,
grazie Anthony, la formula non è mia.
Ho una specie di cassetta degli attrezzi; ho preso e riadattato una formula del Sig. Laurent Longre.
Per quanto riguarda la spiegazione:
=MATR.SOMMA.PRODOTTO(SUBTOTALE(9;SCARTO(F1:F999;RIF.RIGA(F1:F999)-MIN(RIF.RIGA(F1:F999));;1));--(F1:F999<0))
E' una formula matrice, lavora con delle matrici di numeri che hanno tutti la stessa estensione (999)
Parto dalla fine sperando di essere chiaro.
--(F1:F999<0) dentro Matr.somma.prodotto produce una serie di 0/1 vero/falso sulla base che i numeri in F1:F999 sia inferiori a 0.
Questo è il nostro primo fattore che verrà moltiplicaro riga per riga con il risultato di subtotale.
La funzione "Subtotale(9..." ha la caratteristica di non vedere gli elementi nascosti dal filtro automatico. Il problema di Subtotale è di non lasciare troppa libertà nella personalizzazione delle funzioni per le quali è stato impostato.
Subtotale(9;... somma, subtotale(3; conta.valori ...non lasciano alcuna possibilità di personalizzare la propria ricerca come in somma.se o un conta.se
Per poter ovviare a questo limite si può sfruttare una proprietà della funzione SCARTO, proprietà che si attiva quando il secondo argomento della funzione è una matrice (nell'esempio RIF.RIGA(A1:A999) - MIN).
Lo SCARTO legge questo intervallo come se ogni cella fosse un intervallo indipendente e restituisce (dato che siamo dentro SUBTOTALE(9;) 0 se la cella è nascosta, il numero se la cella è visibile.
Questa matrice moltiplicata per la matrice prodotta da --(F1:F999<0) restituisce il risultato.
SUBTOTALE(3; sarebbe servito a contare i valori inferiori a 0.
Una volta aggiustato il secondo argomento di SCARTO - RIF.RIGA(F1:F999)-MIN(RIF.RIGA(F1:F999))- in fondo alla formula si possono aggiungere le condizioni di scelta sul filtrato che ci servono.
Saluti
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8