Kim 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 conteggio dei mesi finali tra le due date. Ad esempio, se la data di inizio è 1/1/17 e la data di fine è 7/31/17, il numero di fine mese è 7. Se, tuttavia, la data di fine è 7/30/17, il numero del mese finisce è 6.

Ci sono un numero qualsiasi di formule che potresti escogitare per calcolare il conteggio corretto. La formula più semplice è se puoi sempre contare sulla data nella colonna C che è l’inizio di un mese. In tal caso, la seguente formula funzionerà perfettamente:

=DATEDIF(C1,D1+1,"m")

Se non puoi contare sulla colonna C contenente una data che è l’inizio di un mese, ma puoi contare sul fatto che le date di inizio e fine sono sempre nello stesso anno, allora una qualsiasi delle seguenti formule farà il trucco:

=IF(MONTH(D1+1)=MONTH(D1),MONTH(D1)-MONTH(C1),MONTH(D1)-MONTH(C1)+1)

=IF(MONTH(D1+1)=MONTH(D1),MONTH(D1)-1,MONTH(D1))-MONTH(C1)+1 =MONTH(EOMONTH(D1,0))-MONTH(EOMONTH(C1,0))+(EOMONTH(D1,0)=D1)

=IF(EOMONTH(D1,0)=D1,MONTH(D1)-MONTH(C1)+1,MONTH(D1)-MONTH(C1))

=IF(D1<EOMONTH(D1,0),MONTH(D1)-1,MONTH(D1))-MONTH(C1)+1 =MONTH(D1)-MONTH(C1)+IF(D1=EOMONTH(D1,0),1,0)

Se gli anni nelle date di inizio e fine potrebbero essere diversi, le formule sono un po ‘più complesse. Qualsiasi delle seguenti variazioni calcolerà il numero corretto di fine mese nell’intervallo di date:

=12*(YEAR(D1)-YEAR(C1))+MONTH(D1)-MONTH(C1)+INT(D1=EOMONTH(D1,0))

=12*(YEAR(D1)-YEAR(C1))+MONTH(D1)-MONTH(C1)+IF(EOMONTH(D1,0)=D1,1,0)

=12YEAR(D1)+MONTH(D1)-12YEAR(C1)-MONTH(C1)+IF(D1=EOMONTH(D1,0),1,0)

=12YEAR(D1)+MONTH(D1)-12YEAR(C1)-MONTH(C1)+(D1=EOMONTH(D1,0))

=12YEAR(D1)+MONTH(D1)-12YEAR(C1)-MONTH(C1)+(DAY(D1+1)=1)

=MONTH(D1)+12YEAR(D1)-MONTH(C1)-12YEAR(C1)+IF(EOMONTH(D1,0)=D1,1,0)

=(MONTH(D1+1)+12YEAR(D1+1))-(MONTH(C1)+12YEAR(C1))

=IF(D1=EOMONTH(D1,0),1,0)+MONTH(D1)-MONTH(C1)+((YEAR(D1)-YEAR(C1))*12)

=IF(EOMONTH(D1,0)=D1,(MONTH(D1)-MONTH(C1)+1)+(YEAR(D1)-YEAR(C1))12,MONTH(D1)-MONTH(C1)+(YEAR(D1)-YEAR(C1))12)

=IF(D1=EOMONTH(D1,0),DATEDIF(EOMONTH(C1,-1),EOMONTH(D1,0),"m"),DATEDIF(EOMONTH(C1,-1),EOMONTH(D1,0),"m")-1)

=IF(D1<C1,"Error",MONTH(D1)-MONTH(C1)+IF(D1MONTH(D1+1))*1)

=IF(D1<C1,"Error",(YEAR(D1)-YEAR(C1))*12+(MONTH(D1)-MONTH(C1))+(EOMONTH(D1,0)=D1))

=SUM(N(FREQUENCY(EOMONTH(ROW(INDIRECT(C1&":"&D1)),0),EOMONTH(ROW(INDIRECT(C1&":"&D1)),0))>0))-(D1<EOMONTH(D1,0))

Alcune di queste formule sono un po ‘lunghe, quindi ti consigliamo di guardare attentamente che le ottieni tutte se scegli di usarne una.

Se si preferisce utilizzare un approccio macro, potrebbe essere interessante la seguente funzione definita dall’utente:

Function CountMonthEnds(sd As Date, ed As Date) As Integer     Dim ceom As Integer     Dim cmonth As Integer     Dim lmonth As Integer     Dim x As Date

cmonth = 0     ceom = 0     cmonth = Month(sd)

lmonth = cmonth     ' go to end date + 1 to allow for end date being end of month     For x = sd To ed + 1         cmonth = Month(x)

If cmonth <> lmonth Then             ceom = ceom + 1             lmonth = cmonth         End If     Next x     CountMonthEnds = ceom End Function

La macro passa semplicemente attraverso tutte le date comprese tra le date di inizio e di fine. Controlla il mese per ciascuna delle date e, se cambia, lo considera come “fine mese”. Questo conteggio viene restituito dalla funzione.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (572) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.