lunedì 19 ottobre 2009

Excel e il primo giorno del mese

Torniamo a problema delle date: potremmo ricavarne il capitolo di un libro! :-)
Può capitare che partendo da una data, ci serva individuare il primo giorno del mese successivo. Immaginiamo di avere in A1 la seguente data: 28/04/2000. In B1 voglio ottenere 01/05/2000 (tra l'altro, questo credo risolva il problema del calcolo dei mesi che intercorrono tra due date -vedi commenti al post http://didalgo.blogspot.com/2009/09/calcolare-i-mesi-in-excel.html. Basterebbe ricavarsi come mese di fine la data del primo del mese successivo).
Come si può fare? Ci servono tre funzioni.

1) La prima è la funzione Anno. Ha un solo argomento: la data da cui ricavare l'anno. Esempio:=Anno(28/04/2000) mi darà come risultato 2000.
2) La seconda è la funzione Mese. Ha un solo argomento: la data da cui ricavare il mese. Esempio:=Mese(28/04/2000) mi darà come risultato 4.
3) La terza è la funzione DATA. Un po' particolare... Serve a costruire una data, usando anno, mese, giorno. Gli argomenti sono infatti tre: Anno, Mese, Giorno.

Tanto per capire come funziona, proviamo a scrivere in C20:

=DATA(2000,01/10) Risultato? 10/01/2000. A che cosa serve? Non bastava scrivere subito la data?! Serve a risolvere il problema di individuare il primo giorno del mese successivo.

Avete sempre in A1 la data 28/04/2000? Molto bene. Ora in B1 scriviamo:

=DATA(Anno(A1);Mese(A1)+1;1)

Risultato: 01/05/2000

Come avrete notato, ho scritto Mese(A1), che darebbe come risultato 4, ma poi ho aggiunto 1, quindi è come se il secondo argomento della funzione fosse 5. Infine ho digitato 1 come valore per l'argomento giorno. E il gioco è fatto. Se lo fate con una data di dicembre, automaticamente Excel visualizzerà la data del 1 gennaio dell'anno successivo.
La prossima volta troveremo la data di fine mese.
Emanuele

2 commenti:

Anonimo ha detto...

Ciao Emanuele,

Sì, questa opzione risolve il problema del conteggio dei mesi intercorrenti tra date contabili.
Ottimo.

Ora mi chiedevo (e prima o poi mi iscriverò anche...), visto che sono immerso in un mondo di documenti e moduli cartacei:

C'è la possibilità di immettere dei dati in un foglio, e farli apparire in un secondo foglio, all'interno di un contesto precostruito?

- Parlo semplice che è meglio -
nella mia testa la scena si svolge così:
Io riempio i campi nel foglio uno, e ogni volta che passo ad una riga successiva, nel foglio due la tabella, posta al centro di campi che devono rimanere fissi, si allunga spostando verso il basso tutto ciò che non le appartiene, facendoci infine stare tutti i dati che ho inserito, senza cambiare l'assetto della pagina.

Pura fantascienza o reltà?
Dovrei indirizzarmi verso le Macro? Le Pivot? Il Voodoo?

Prostrandomi reverente,
Michele.

emanuele ha detto...

ciao Michele, mi fa piacere di avere risolto!
rispondo alla prima domanda: direi di sì. sarà oggetto di un post ad hoc.
seconda domanda: escluderei le pivot, se capisco bene la problematica e anche il voodoo -che ignoro ;-)!

in realtà temo che la tua problematica non sia "semplice" come ciò che scriverò nel post... nel senso che -se capisco bene- la quantità di righe per te è variabile.. e ciò complica le cose. bisognerebbe almeno che ci fosse un max ipotizzabile, tipo : tabella di non più di 20 righe.

non s'imparano le macro dall'oggi al domani-, ma con le macro sicuramente si risolve egregiamente il problema. forse prima di arrivare alle macro ci sono altre soluzioni... vediamo come riusciamo a fare, step by step.