Come spostare tutte le date al mese precedente

Catia ha bisogno di una formula che cambi qualsiasi data che cade nel mese corrente nell’ultimo giorno del mese precedente. Nota inoltre che sarebbe utile disporre di una macro VBA in grado di eseguire questa operazione sulle date in un intervallo di celle selezionate.

Esistono in realtà diversi approcci basati su formule che è possibile utilizzare per ricavare la data desiderata. Questi due sono i più brevi e facili da usare:

=A1-GIORNO(A1)
=FINE.MESE(A1;-1)

 

La prima funziona perché il “giorno 0” del mese corrente è sempre considerato l’ultimo giorno del mese precedente. Pertanto, se la data nella cella A1 è 25/9/23, si finisce per sottrarre 25 (il valore di GIORNO) da quel giorno, ottenendo la data 0/9/23 o 31/8/23.

La seconda formula funziona grazie all’inclusione del secondo parametro per la funzione FINE.MESE. Questo parametro viene utilizzato per indicare quanti mesi nel passato (negativo) o nel futuro (positivo) deve essere calcolata la fine del mese.

In entrambi i casi, potrebbe essere necessario formattare la cella contenente la formula come data. In caso contrario, ciò che vedi potrebbe essere il numero di serie sottostante utilizzato da Excel per calcolare le date.

Se desideri una macro che converta effettivamente le date di un intervallo selezionato nell’ultimo giorno del mese precedente, quanto segue farà il trucco:

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)

La macro scorre ogni cella nell’intervallo selezionato e verifica se contiene una data e non è una formula (in altre parole, se la data in una cella è il risultato di una formula, la formula non viene modificata). Viene quindi utilizzata la funzione EoMonth, come descritto in precedenza, per calcolare la data desiderata.

In alternativa, invece di controllare all’interno del ciclo per vedere se ogni cella non contiene una formula, possiamo eliminare quella parte del controllo e lasciare che sia Excel a filtrare le celle da controllare. Per farlo, possiamo trasformare la macro come segue:

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)

Va detto che l’approccio macro convertirà anche le date testuali. Ad esempio, se una cella contiene, come testo, la data “15/06/23”, la macro la modificherà in 31/05/23. Una volta che la data modificata è stata inserita nuovamente nella cella, verrà mostrata come un numero seriale di data/ora, non come testo.

 

LE SCHEDE TECNICHE DELLE FUNZIONI UTILIZZATE

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

Ti è stato utile?