Corinna ha un foglio di lavoro in cui inserisce una data di inizio (colonna C) e una data di fine (colonna D). Ha bisogno di un modo per calcolare il numero di fine mese tra le due date. Ad esempio, se la data di inizio è 01/01/23 e la data di fine è 31/07/23, il numero di fine mese è 7. Se, invece, la data di fine è 30/07/23, il numero di fine mese è 6.
Ci sono un gran numero di formule che potresti escogitare per calcolare il conteggio corretto. La formula più semplice puoi applicarla se la data nella colonna C (data di inizio) è sempre il primo giorno del mese. In tal caso, la seguente formula funzionerà correttamente:
=DATA.DIFF(C1;D1+1;"m")
Se non puoi contare sul fatto che la colonna C contenga una data che è l’inizio di un mese, ma puoi contare sul fatto che le date di inizio e fine siano sempre nello stesso anno, allora una qualsiasi delle seguenti formule svolgerà il compito:
=SE(MESE(D1+1)=MESE(D1);MESE(D1)-MESE(C1);MESE(D1)-MESE(C1)+1) =SE(MESE(D1+1)=MESE(D1);MESE(D1)-1;MESE(D1))-MESE(C1)+1 =MESE(FINE.MESE(D1;0))-MESE(FINE.MESE(C1;0))+(FINE.MESE(D1;0)=D1) =SE(FINE.MESE(D1;0)=D1;MESE(D1)-MESE(C1)+1;MESE(D1)-MESE(C1)) =SE(D1<FINE.MESE(D1;0);MESE(D1)-1;MESE(D1))-MESE(C1)+1 =MESE(D1)-MESE(C1)+SE(D1=FINE.MESE(D1;0);1;0)
Se gli anni nelle date di inizio e fine potrebbero essere diversi, allora le formule sono un po’ più complesse. Una qualsiasi delle seguenti variazioni calcolerà il numero corretto di fine mese nell’intervallo di date:
=12*(ANNO(D1)-ANNO(C1))+MESE(D1)-MESE(C1)+INT(D1=FINE.MESE(D1;0)) =12*(ANNO(D1)-ANNO(C1))+MESE(D1)-MESE(C1)+SE(FINE.MESE(D1;0)=D1;1;0) =12*ANNO(D1)+MESE(D1)-12*ANNO(C1)-MESE(C1)+SE(D1=FINE.MESE(D1;0);1;0) =12*ANNO(D1)+MESE(D1)-12*ANNO(C1)-MESE(C1)+(D1=FINE.MESE(D1;0)) =12*ANNO(D1)+MESE(D1)-12*ANNO(C1)-MESE(C1)+(GIORNO(D1+1)=1) =MESE(D1)+12*ANNO(D1)-MESE(C1)-12*ANNO(C1)+SE(FINE.MESE(D1;0)=D1;1;0) =(MESE(D1+1)+12*ANNO(D1+1))-(MESE(C1)+12*ANNO(C1)) =SE(D1=FINE.MESE(D1;0);1;0)+MESE(D1)-MESE(C1)+((ANNO(D1)-ANNO(C1))*12) =SE(FINE.MESE(D1;0)=D1;(MESE(D1)-MESE(C1)+1)+(ANNO(D1)-ANNO(C1))*12;MESE(D1)-MESE(C1)+(ANNO(D1)-ANNO(C1))*12) =SE(D1=FINE.MESE(D1;0);DATA.DIFF(FINE.MESE(C1;-1);FINE.MESE(D1;0);"m");DATA.DIFF(FINE.MESE(C1;-1);FINE.MESE(D1;0);"m")-1) =SE(D1<C1;"Errore";(ANNO(D1)-ANNO(C1))*12+(MESE(D1)-MESE(C1))+(FINE.MESE(D1;0)=D1)) =SOMMA(NUM(FREQUENZA(FINE.MESE(RIF.RIGA(INDIRETTO(C1&":"&D1));0);FINE.MESE(RIF.RIGA(INDIRETTO(C1&":"&D1));0))>0))-(D1<FINE.MESE(D1;0))
Alcune di queste formule sono un po’ lunghe, quindi ti consigliamo di controllare attentamente di averle copiate per intero se scegli di usarne una.
Se si preferisce utilizzare un approccio macro, potrebbe essere interessante la seguente funzione definita dall’utente:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
La macro scorre semplicemente tutte le date comprese tra le date di inizio e di fine. Controlla il mese per ciascuna delle date e, se cambia, lo conta come “fine mese”. Questo conteggio viene restituito dalla funzione.