繁体   English   中英

以月计算日期重叠

[英]Calculate date overlap in months

需要一点帮助,如果你这么好心的话。

在 MS Excel 中,我试图根据学年计算出学生上大学的月数。

例如,学生在以下日期注册并完成大学学业:

  • 23/06/2018 - 23/06/2020

学生参加多个学年:

  • 2017 年 1 月 8 日 - 2018 年 7 月 31 日

  • 01/08/2018 - 31/07/2019

  • 2018 年 1 月 8 日 - 2020 年 7 月 31 日

我想计算学生每个学年上学的月份:

  • 2017 年 1 月 8 日 - 2018 年 7 月 31 日(1 个月)

  • 2018 年 1 月 8 日 - 2019 年 7 月 31 日(12 个月)

  • 2018 年 1 月 8 日 - 2020 年 7 月 31 日(11 个月)

我已经设法使用这个 function 计算了天数:

=MAX(MIN(term_end_date, student_,end_date) - MAX(term_start_date, student_start_date)+1,0)

但是,如果可能的话,我需要几个月的时间。

提前感谢帮助。

在此处输入图像描述

=DATEDIF(A1,B1,”M”) 将给出在 A1 和 B1 中输入日期的两个日期(即不包括开始和结束月份)之间的整月数。 “M”表示您希望以月为单位报告信息。

要获得准确的结果,请尝试:=(DATEDIF(A1,B1,”D”) / 365) * 12。如果日期跨越多年 - 包括闰年 - 尝试除以 365.25 和 365。

请试试这个 UDF。

Function MonthsOverlap(Rng As Range, _
                       AccYear As Integer) As String
    ' 016

    Const Ststart As Long = 1               ' index of array 'Study'
    Const Stend As Long = 2                 ' index of array 'Study'

    Dim Fun As Integer                      ' Months of overlap
    Dim YearStart As Date, YearEnd As Date
    Dim Study As Variant

    YearStart = DateSerial(AccYear, 8, 1)   ' modify year and day as required
    YearEnd = DateAdd("yyyy", 1, YearStart)
    Study = Rng.Value                       ' Rng columns must be adjacent

    With Application.WorksheetFunction
        If Study(1, Ststart) <= YearStart Then
            Fun = DateDiff("m", .Max(Study(1, Ststart), YearStart), .Min(Study(1, Stend), YearEnd))
        ElseIf Study(1, Ststart) <= YearEnd Then
             Fun = DateDiff("m", .Max(Study(1, Ststart), YearStart), YearEnd)
        End If
        Fun = .Max(Fun, 0)
    End With

    MonthsOverlap = Fun & " month" & IIf(Fun = 1, "", "s")
End Function

我在一张如下图所示的表格中对其进行了测试。 请注意公式栏中的公式。 在此处输入图像描述

如您所见,function 在 2017 年和 2019 年返回了意想不到的结果。我认为它们没有错。 该公式仅使用与您的系统不同的月份四舍五入。 我认为一旦你知道 function 可以修改以适应你的规则。 同时它遵循微软的规则,坦率地说,我也不知道。 但是,请注意,学习的总时间是 24 个月,这是正确的,因此足以说服我让今天足够好:-)

我找到了一个很好的解决方案:

在此处输入图像描述

感谢大家的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM