Contagem de ocorrências de uma data em uma lista de intervalos de datas [duplicados]

0

Eu tenho uma tabela do Excel 2010 que lista eventos, fornecendo detalhes sobre o evento e uma data de início e término para cada evento. Esses eventos ocorreram ao longo de um ano. Eu preciso criar uma lista de todas as datas dentro desse intervalo de tempo (já pronto) e obter uma contagem para cada dia de quantos eventos estavam acontecendo nessa data. ou seja, em 4 de junho de 2017, havia 3 eventos. Então minha lista original apareceria assim:

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

etc ...

E a partir dos dados acima, gostaria que minha lista fosse exibida:

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...

Eu tentei o Countifs, versões regulares e de matriz, sem sorte (parece contar as ocorrências no primeiro evento, mas não no outro ...) Eu tentei uma construção If (e ()), mas teve ainda menos sucesso (muitos #Values).

EU PODERIA possivelmente escrever uma função VBA para isso, mas isso parece um exagero, especialmente porque esta é a primeira vez que eu encontro isso e não vejo isso sendo algo recorrente.

    
por knicks 07.11.2017 / 20:45

2 respostas

1

Com base em várias datas na coluna F e em ListObject / "table" com uma coluna From e To contendo os eventos iniciando & datas de término, estou obtendo resultados aparentemente corretos com essa fórmula COUNTIFS :

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

FWIW Estou obtendo resultados idênticos com esta função 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

Usado da seguinte forma:

=COUNTFOR($F2,Table1[[From]:[To]])
    
por 07.11.2017 / 21:34
0

Portanto, se a sua lista de eventos tiver datas de início na coluna C e as datas de término na coluna D, então com a sua lista de datas em F2, use esta fórmula em G2

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

copie essa fórmula na coluna e você terá a contagem desejada

    
por 07.11.2017 / 21:36