如何计算两个date之间的年数
这个macros计算工作经历的第一个和最后一个date之间的年数。 我做了这个工作,但以奇怪的格式(像一个date而不是一个数字)得到这个数字。 看起来有些事情可能是错的。 在此先感谢您的意见。
Sub CuentaExperiencia() Worksheets("Candidatos").Activate 'esta macro contabiliza los años de experiencia sumados Range("T2").Select Do Until ActiveCell.Offset(0, -18).Value = "" If ActiveCell.Value = "" Then ActiveCell.FormulaR1C1 = DateDiff("d", (ActiveCell.Offset(0, -2)), (ActiveCell.Offset(0, -1))) End If ActiveCell.Offset(1, 0).Select Loop Range("AE2").Select Do Until ActiveCell.Offset(0, -29).Value = "" If ActiveCell.Value = "" Then ActiveCell.FormulaR1C1 = DateDiff("d", (ActiveCell.Offset(0, -2)), (ActiveCell.Offset(0, -1))) End If ActiveCell.Offset(1, 0).Select Loop Range("AP2").Select Do Until ActiveCell.Offset(0, -40).Value = "" If ActiveCell.Value = "" Then ActiveCell.FormulaR1C1 = DateDiff("d", (ActiveCell.Offset(0, -2)), (ActiveCell.Offset(0, -1))) End If ActiveCell.Offset(1, 0).Select Loop Range("BA2").Select Do Until ActiveCell.Offset(0, -51).Value = "" If ActiveCell.Value = "" Then ActiveCell.FormulaR1C1 = DateDiff("d", (ActiveCell.Offset(0, -2)), (ActiveCell.Offset(0, -1))) End If ActiveCell.Offset(1, 0).Select Loop End Sub
只需使用=DAYS(end_date,start_date)
公式,然后除以365得到年数; 不需要使用VBA。 如果你正在做一个更大的VBAmacros的一部分,你可以使用WorksheetFunction.Days(end_date,start_date)
。
编辑:更简单:只需使用=YEARFRAC()
。 它会为你做这一切。
你应该注意到,简单地除以365并不能解释闰年,这就给答案带来了一些错误。 尽pipe在这种情况下这个错误是微不足道的,但是您可以简单地通过使用=YEARFRAC(start_date, end_date, [basis])
并使用1
作为基本参数来避免它。 这将强制使用实际的日历date,这将正确地说明闰年。 否则, YEARFRAC
每个月都会有一个标准的30天的月份,而您的回答会越来越不准确。
或者你可以使用这样的Datedifffunction…
DateDiff("yyyy", StartDate, EndDate)
示例代码:
Sub NumberOfYears() Dim StartDate As Date Dim EndDate As Date Dim Years As Integer StartDate = #1/1/2015# EndDate = #12/31/2017# Years = DateDiff("yyyy", StartDate, EndDate) MsgBox Years End Sub