计算日期范围列表中日期的出现次数[重复]


0

这个问题在这里已有答案:

我有一个Excel 2010表,列出事件,提供有关事件的详细信息以及每个事件的开始和结束日期。这些事件发生在一年之内。我需要创建一个包含该时间跨度内所有日期的列表(已经完成)并获取每天在该日期发生的事件数量的计数。即2017年6月4日,有3个活动。所以我的原始列表将如下所示:

Event ID  Event Name  Start Date    End Date
A12411    Event One   June 1, 2017  June 10, 2017
A45721    Event Two   June 1, 2017  June 5, 2017
A84541    Event Three June 2, 2017  June 4, 2017

等等...

从上面的数据,我希望我的列表显示:

Date          Number of events
June 1, 2017  2
June 2, 2017  3
June 3, 2017  3
June 4, 2017  3
June 5, 2017  2
etc...

我已经尝试了常规和数组版本的Countifs,没有运气(它似乎计算了第一个事件的发生次数,但不计算其他事件......)我尝试了一个If(和())构造,但是甚至更少成功(很多#Values)。

我可以想象它为它写了一个VBA函数,但这似乎有点矫枉过正,特别是因为这是我第一次遇到这个并且不认为它是一个反复出现的事情。


1
你的是什么 COUNTIFS 你试过的公式?
Mathieu Guindon

Answers:


1

列中有一堆日期 F 和a ListObject /“表”用 From 和a To 包含您的活动开始和列的列结束日期,我得到了看似正确的结果 COUNTIFS 式:

=COUNTIFS(Table1[From],"<="&$F2,Table1[To],">="&$F2)

FWIW我用这个VBA函数获得了相同的结果:

Public Function CountFor(ByVal calendarDate As Date, ByVal eventDates As Range) As Long
    Dim dates As Variant
    dates = eventDates.Value

    'assert eventDates consists of 2 columns
    Debug.Assert UBound(dates, 2) = 2
    Const StartDateColumn = 1
    Const EndDateColumn = 2

    Dim result As Long

    Dim eventIndex As Long
    For eventIndex = LBound(dates, 1) To UBound(dates, 1)
        If dates(eventIndex, StartDateColumn) <= calendarDate And dates(eventIndex, EndDateColumn) >= calendarDate Then result = result + 1
    Next

    CountFor = result

End Function

使用如下:

=COUNTFOR($F2,Table1[[From]:[To]])

0

因此,如果您的事件列表在C列中有开始日期,在D列中有结束日期,那么在F2中使用您的日期列表,请在G2中使用此公式

=COUNTIFS(C:C,"<="&F2,D:D,">="&F2)

将该公式复制到列中,您将获得所需的计数

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.