Como posso usar if function in excel para contar números únicos que não são maiores que a duração de tempo dada

1

Eu tenho muitos dados de transação contendo data, hora, ID

assim:

  DATE         TIME           ID 

7/6/2015     9:30:22       0266731550    
7/6/2015     9:33:19       0266731550    
7/6/2015     10:31:38      0266731550    

quero contar quantas transações por dia que são exclusivas (podem ser identificadas pelo ID), mas o tempo não superior a 5 minutos .

Por exemplo, existem 3 IDs iguais para o primeiro ID 0266731550 contado como 1 porque seu intervalo de tempo com o ID anterior 0266731550 não é superior a 5 minutos ( 9:33:19-9:30:22 < 5mins ).

Diferente da terceira ID 0266731550 , é contada como 1 porque seu intervalo de tempo com a ID anterior 0266731550 é mais do que 5 minutos ( 10:31:38-9:33:19 > 5mins ).

ps: estou usando ms. excel 2010

    
por Irina 28.07.2015 / 16:55

1 resposta

0

Se você não for adverso ao uso do VBA, eu posso voltar com um código mais detalhado depois, mas no código pseudo-ish:

Dim array(1, 1) As Long

For i = 1 To Len(table)

    ' if value is already in the array, skip this part. if not, redim the array and store the value.
    If Not Match(Cells(1, i), array) <> 0 Then
        ReDim array(1, i)
        array(1, i) = Cells(1, i).Value
    End If

    ' write the time intervals for comparison
    Dim intervals(2, 1)
    ' iterate over the column where timestamps are and write all of them to array, checking with array(1, i) to make sure the ID is correct. redim as required.
    ' sort the array and measure for 5min intervals.
    ' keep a unique-values variable that you increment every time a satisfactory interval is found.
Next i

Você pode enviar esses valores para a planilha, para um arquivo ou em um msgbox.

    
por 28.07.2015 / 18:45