Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

Calcolo data in excel Opzioni
clem
Inviato: Thursday, February 02, 2012 10:29:19 AM
Rank: AiutAmico

Iscritto dal : 4/27/2004
Posts: 109
Salve,
non so se è stato posto già una simile domanda, nel caso scusatemi.
Vorrei sapere come fare per conoscere quanti giorni intercorrono da due date: es. 07/01/2011 al 21/09/2011 ; saputi i giorni divido per 30 per sapere i mesi.
utilizzo excel 2003.

saluti
Giuseppe
Sponsor
Inviato: Thursday, February 02, 2012 10:29:19 AM

 
a10n11
Inviato: Thursday, February 02, 2012 2:58:44 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
clem
Inviato: Thursday, February 02, 2012 7:31:18 PM
Rank: AiutAmico

Iscritto dal : 4/27/2004
Posts: 109
Grazie Giap.
Saluti
Giuseppe
clem
Inviato: Thursday, February 02, 2012 7:47:04 PM
Rank: AiutAmico

Iscritto dal : 4/27/2004
Posts: 109
..ops , un ulteriore chiarimento: è possibile sapere contemporaneamente a quanti anni, mesi e giorni corrisponde una differenza di data ? Per esempio dal 01/01/2012 al 02/02/2012 , verrebbe indicato : anni 0; mesi 1; giorni 1 .

Saluti.
Giuseppe
a10n11
Inviato: Friday, February 03, 2012 12:20:03 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
clem ha scritto:
..ops , un ulteriore chiarimento: è possibile sapere contemporaneamente a quanti anni, mesi e giorni corrisponde una differenza di data ? Per esempio dal 01/01/2012 al 02/02/2012 , verrebbe indicato : anni 0; mesi 1; giorni 1 .

Saluti.
Giuseppe

salve
basta concatenare la funzione Data.Diff() es.

="anni " & DATA.DIFF(A1;B1;"y") & "; mesi " & DATA.DIFF(A1;B1;"ym") & " ;giorni " & DATA.DIFF(A1;B1;"md")

posto che le date siano rispettivamente in A1 e B1

saluti
Giap

clem
Inviato: Saturday, February 04, 2012 11:51:13 AM
Rank: AiutAmico

Iscritto dal : 4/27/2004
Posts: 109
Ho provato la formula con una data presa a caso: 21/06/2009 al 12/01/2012 , mi restituisce anni 2 ; mesi 6 ; giorni 135.
Perchè i giorni 135 ? Questi sono circa 4 mesi che la fomula avrebbe dovuto sommare ai 6 , dando anni 2 ; mesi 10 ; giorni 15 .
Forse mi sfugge qualcosa .

Ti ringrazio .
saluti
giuseppe
a10n11
Inviato: Monday, February 06, 2012 11:53:36 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
clem ha scritto:
Ho provato la formula con una data presa a caso: 21/06/2009 al 12/01/2012 , mi restituisce anni 2 ; mesi 6 ; giorni 135.
Perchè i giorni 135 ? Questi sono circa 4 mesi che la fomula avrebbe dovuto sommare ai 6 , dando anni 2 ; mesi 10 ; giorni 15 .
Forse mi sfugge qualcosa .

Ti ringrazio .
saluti
giuseppe


Salve
siamo certi che usi la vesione 2003?? è provato che con la versione 2007, la funzione Data.Diff restituiisce valori errati nel calcolo dei giorni. Parte proprio che nel conteggio dei giorni se il giorno finale è minore del giorno iniziale produce valori errati ma se provi con
21/06/2009 - 22/01/2012 il conteggio è corretto. Nessuna inform,azione in merito a ,ciò da partte di MS.

Una funzione Utente che scavalca il problema recuperata in rete è quella che segue:

Function YearsMonthsDays(Date1 As Date, Date2 As Date, Optional ShowAll As _
Boolean = False, Optional Grammar As Boolean = True)

'Udf prelevata dal sito www.vbaexpress.com

Dim TestYear As Long, TestMonth As Long, TestDay As Long
Dim TargetDate As Date, Last1 As Date, Last2 As Date

' Strip time portions
Date1 = Int(Date1)
Date2 = Int(Date2)

' Test for invalid dates
If Date1 > Date2 Then
YearsMonthsDays = ""
Exit Function
End If

' Test for whether the calendar year is the same
If Year(Date2) > Year(Date1) Then

' Different calendar year.

' Test to see if calendar month is the same. If it is, we have to look at the
' day to see if a full year has passed
If Month(Date2) = Month(Date1) Then
If Day(Date2) >= Day(Date1) Then
TestYear = DateDiff("yyyy", Date1, Date2)
Else
TestYear = DateDiff("yyyy", Date1, Date2) - 1
End If

' In this case, a full year has definitely passed
ElseIf Month(Date2) > Month(Date1) Then
TestYear = DateDiff("yyyy", Date1, Date2)

' A full year has not passed
Else
TestYear = DateDiff("yyyy", Date1, Date2) - 1
End If

' Calendar year is the same, so a full year has not passed
Else
TestYear = 0
End If

' Test to see how many full months have passed, in excess of the number of full
' years
TestMonth = (DateDiff("m", DateSerial(Year(Date1), Month(Date1), 1), _
DateSerial(Year(Date2), Month(Date2), 1)) + IIf(Day(Date2) >= _
Day(Date1), 0, -1)) Mod 12

' See how many days have passed, in excess of the number of full months. If the day
' number for Date2 is >= that for Date1, it's simple
If Day(Date2) >= Day(Date1) Then
TestDay = Day(Date2) - Day(Date1)

' If not, we have to test for end of the month
Else
Last1 = DateSerial(Year(Date2), Month(Date2), 0)
Last2 = DateSerial(Year(Date2), Month(Date2) + 1, 0)
TargetDate = DateSerial(Year(Date2), Month(Date2) - 1, Day(Date1))
If Last2 = Date2 Then
If TestMonth = 11 Then
TestMonth = 0
TestYear = TestYear + 1
Else
TestMonth = TestMonth + 1
End If
Else
TestDay = DateDiff("d", IIf(TargetDate > Last1, Last1, TargetDate), Date2)
End If
End If

If ShowAll Or TestYear >= 1 Then
YearsMonthsDays = TestYear & IIf(TestYear = 1 And Grammar, " Anno, ", _
" Anni, ") & TestMonth & IIf(TestMonth = 1 And Grammar, " Mese, ", _
" Mesi, ") & TestDay & IIf(TestDay = 1 And Grammar, " Giorno", " Giorni")
Else
If TestMonth >= 1 Then
YearsMonthsDays = TestMonth & IIf(TestMonth = 1 And Grammar, " Mese, ", _
" Mesi, ") & TestDay & IIf(TestDay = 1 And Grammar, " Giorno", " Giorni")
Else
YearsMonthsDays = TestDay & IIf(TestDay = 1 And Grammar, " Giorno", " Giorni")
End If
End If

End Function



Copia e incolla tutto il codice da Function a End function in un modulo standard di Visual basic e richiama come funzione definta dall'utente.
saluti
Giap

clem
Inviato: Tuesday, February 07, 2012 8:38:16 AM
Rank: AiutAmico

Iscritto dal : 4/27/2004
Posts: 109
In effetti la prova suddetta l'ho fatta su un altro pc dove è montata la versione 2007; provata sulla 2003 tutto ok.
Funziona anche la routine che hai indicato.
Ti ringrazio.
Saluti
Giuseppe
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.