Avanzare automaticamente all’inizio del mese successivo una volta superata la metà del mese

Giovanni ha bisogno di far avanzare di un mese la data presente in una particolare cella alla mezzanotte del 14/15 di ogni mese (00:00:00 del 15) e si chiedeva come si potesse fare.

Come per molti problemi in Excel, la risposta dipende dalla natura dei dati coinvolti e da cosa si vuole fare esattamente. Se la data nella cella è la data odierna e desideri semplicemente che la cella visualizzi il mese corrente fino al 14 e poi il mese successivo, puoi utilizzare una formula come la seguente:

=SCEGLI(SE(GIORNO(ADESSO())>14;MESE(ADESSO())+1;MESE(ADESSO()));"Gennaio";
"Febbraio";"Marzo";"Aprile";"Maggio";"Giugno";"Luglio";"Agosto";
"Settembre";"Ottobre";"Novembre";"Dicembre";"Gennaio")

 

Lo stesso risultato può essere raggiunto con questa formula, molto più breve:

=TESTO(DATA.MESE(OGGI();SE(GIORNO(OGGI())>14;1;0));"MMMM")

 

Entrambe queste formule restituiscono il nome di un mese, non una data. Se preferisci che venga restituita una data, puoi utilizzare questa formula:

=SE(GIORNO(ADESSO())>14;DATA.VALORE(SE(MESE(ADESSO())=12;1;
MESE(ADESSO())+1) & "/" & GIORNO(ADESSO()) & "/" & SE(MESE(
ADESSO())=12;ANNO(ADESSO())+1;ANNO(ADESSO())));ADESSO())

 

Entrambe queste formule tengono conto della “chiusura di fine anno” quando si passa da dicembre a gennaio. È possibile creare una versione più breve di quest’ultima formula se si utilizza la funzione DATA invece della funzione DATA.VALORE:

=DATA(ANNO(ADESSO());MESE(ADESSO())+((GIORNO(ADESSO())>14)*1);1)

 

Questa formula, a differenza dell’esempio con DATA.VALORE, restituisce sempre il primo giorno di un dato mese.

Se vuoi davvero far avanzare il valore di una data particolare in una cella, devi utilizzare una macro per eseguire l’attività. Inoltre, devi assicurarti che la macro venga eseguita solo una volta al mese, a un’ora particolare in un giorno particolare. Ad esempio, se si desidera che la macro venga eseguita alle 00:00:00 del 15 di ogni mese, è necessario impostare la macro in modo che controlli la data e l’ora e quindi venga eseguita in quella particolare data e ora. Dovresti anche assicurarti che la cartella di lavoro contenente la macro sia aperta in quella data e ora.

La seguente macro recupererà la data da una cella e la incrementerà di un mese. La macro presuppone che si disponga di un intervallo denominato, DateCell, che fa riferimento alla cella da aggiornare.

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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Si noti che questa particolare macro imposta il metodo OnTime in modo che esegua la macro IncreaseMonth alle 23:59:59 del 14. Queste data e ora sono state scelte perché sono più facili da rilevare rispetto alle 00:00:00 del 15.

Tieni presente che la macro IncreaseMonth verrà eseguita solo se la cartella di lavoro risulta aperta in quella data e ora.

 

Tags: , , , , , , , , , , , , , , , ,

Ti è stato utile?