
Formula generica
=IF(A1>=start,(MOD(DATEDIF(start,A1,"m")+n,n)=0)*value,0)
Sommario
Per ripetere un valore fisso ogni 3 mesi, è possibile utilizzare una formula basata sulle funzioni DATEDIF e MOD. Nell'esempio mostrato, la formula in C4, copiata verso il basso, è:
=IF(B4>=start,(MOD(DATEDIF(start,B4,"m")+n,n)=0)*value,0)
dove "inizio" è l'intervallo denominato F6, "n" è F4 e "valore" è F5.
Spiegazione
La prima cosa che fa questa formula è controllare la data nella colonna B rispetto alla data di inizio:
=IF(B4>=start
Se la data non è maggiore della data di inizio, la formula restituisce zero. Se la data è maggiore o uguale alla data di inizio, la funzione IF esegue questo snippet:
(MOD(DATEDIF(start,B4,"m")+n,n)=0)*value
All'interno di MOD, la funzione DATEDIF viene utilizzata per ottenere il numero di mesi tra la data di inizio e la data in B4. Quando la data in B4 è uguale alla data di inizio, DATEDIF restituisce zero. Il mese successivo, DATEDIF restituisce 1 e così via.
A questo risultato, aggiungiamo il valore per l'intervallo denominato "n", che è 3 nell'esempio. In questo modo il modello di numerazione inizia effettivamente da 3 anziché da zero.
La funzione MOD viene utilizzata per controllare ogni valore, con n come divisore:
MOD(DATEDIF(start,B4,"m")+n,n)=0
Se il resto è zero, stiamo lavorando con un mese che richiede un valore. Invece di annidare un'altra funzione IF, utilizziamo la logica booleana per moltiplicare il risultato dell'espressione sopra per "valore".
Nei mesi in cui dovrebbe essere presente un valore, MOD restituisce zero, l'espressione è TRUE e viene restituito valore. In altri mesi, MOD restituisce un risultato diverso da zero, l'espressione è FALSE e il valore è forzato a zero.