Excel - 计算开始结束日期范围内的唯一天数

Excel - 计算开始结束日期范围内的唯一天数

新年快乐!

我有一个填写了开始结束日期的 Excel 文件(A2:B7)。我的兴趣是尝试获取某个间隔内的特定日期。

我做了研究,但似乎找不到任何解决方案,大多数帖子都是关于在单个列中搜索唯一日期。但我的兴趣是获取开始日期和结束日期间隔内的唯一日期(A2:B7

我制作了 Excel 作为示例(如下),预期结果在 F8 行。我还制作了一个侧日历作为示例(标记为绿色的日期是该函数应该计算的日期)。

计算日期范围内的唯一天数

计算日期范围内的唯一天数

由于我对 Excel 的了解有限,我不知道如何使用函数获得这个结果。

有人可以花点时间尝试帮助我弄清楚如何才能得到这个结果吗?

答案1

您可以使用 VBA 函数来实现它。下面的函数计算给定的开始日期和结束日期之间的唯一天数。它将它们作为参数。它使用字典从每一行获取日期。然后删除不符合条件的日期。最后,它返回唯一日期的数量。

函数 UniqeDaysBetween

Function UniqueDatesBetween(startd As Range, endd As Range) As Integer

    Dim d As Object
    Dim lrow As Integer
    Dim sdate, edate As Date
    
    'Create a dictionary
    Set d = CreateObject("scripting.dictionary")
    'Get last row of column A
    lrow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For x = 2 To lrow
        'Get start and end dates for each row
        sdate = Range("A" & x).Value
        edate = Range("b" & x).Value

        While sdate <= edate
            'Add dates into the dictionary
            d(sdate) = sdate
            sdate = sdate + 1

        Wend

    Next x

    For Each vdate In d
        'Remove date if not in the range criteria
        If Not (vdate >= startd And vdate < endd) Then
            d.Remove vdate
        End If
    Next vdate
    'Get the number of unique days
    UniqueDatesBetween = d.Count
    
End Function

UniqueDaysBetween 函数的演示

相关内容