代码之家  ›  专栏  ›  技术社区  ›  lbh sdc

如何计算两个日期之间的年数

  •  0
  • lbh sdc  · 技术社区  · 8 年前

    该宏计算工作经历的第一个日期和最后一个日期之间的年数。我做了这项工作,但得到了一个奇怪的数字格式(像一个日期,而不是一个数字)。看起来好像出了什么问题。 提前感谢您的评论。

    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
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Subodh Tiwari sktneer    8 年前

    或者你可以像这样使用Datediff函数。。。

    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
    
        2
  •  2
  •   Chilangosta    8 年前

    只需使用 =DAYS(end_date,start_date) WorksheetFunction.Days(end_date,start_date) .

    编辑:更简单:只需使用 =YEARFRAC() . 这一切都会为你做的。

    =YEARFRAC(start_date, end_date, [basis]) 1 作为基本参数。这将强制使用实际日历日,这将正确解释闰年。否则 YEARFRAC 假设每个月有30天的标准工作日,您的答案将越来越不准确。