新年快乐!
我有一个填写了开始结束日期的 Excel 文件(A2:B7)。我的兴趣是尝试获取某个间隔内的特定日期。
我做了研究,但似乎找不到任何解决方案,大多数帖子都是关于在单个列中搜索唯一日期。但我的兴趣是获取开始日期和结束日期间隔内的唯一日期(A2:B7)
我制作了 Excel 作为示例(如下),预期结果在 F8 行。我还制作了一个侧日历作为示例(标记为绿色的日期是该函数应该计算的日期)。
计算日期范围内的唯一天数
由于我对 Excel 的了解有限,我不知道如何使用函数获得这个结果。
有人可以花点时间尝试帮助我弄清楚如何才能得到这个结果吗?
答案1
您可以使用 VBA 函数来实现它。下面的函数计算给定的开始日期和结束日期之间的唯一天数。它将它们作为参数。它使用字典从每一行获取日期。然后删除不符合条件的日期。最后,它返回唯一日期的数量。
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