Làm cách nào tôi có thể sử dụng nếu hàm trong excel để đếm các số duy nhất không lớn hơn khoảng thời gian nhất định


1

Tôi có một loạt dữ liệu giao dịch chứa ngày, giờ, ID

như thế này:

  DATE         TIME           ID 

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

sau đó tôi muốn tính có bao nhiêu giao dịch mỗi ngàyduy nhất (có thể được xác định bằng ID) nhưng thời gian không quá 5 phút .

Ví dụ: có 3 ID giống nhau, cho 2 ID đầu tiên 0266731550được tính là 1 vì khoảng cách thời gian của nó với ID trước đó 0266731550không quá 5 phút ( 9:33:19-9:30:22 < 5mins).

Khác với ID thứ ba 0266731550, nó được tính là 1 vì khoảng cách thời gian của nó với ID trước đó 0266731550là hơn 5 phút ( 10:31:38-9:33:19 > 5mins).

ps: Tôi đang sử dụng ms. xuất sắc 2010


Bạn có thể thêm một cột thứ tư để tính chênh lệch thời gian giữa một giao dịch và giao dịch trước đó không? Ngoài ra - Điều gì sẽ xảy ra nếu bạn có bốn giao dịch cách nhau ba phút? Có bao nhiêu giao dịch "duy nhất" được tính là?
Adam

Xin chào Adam, cảm ơn câu trả lời của bạn. Tôi dường như không thể tính được chênh lệch thời gian giữa giao dịch và giao dịch trước đó một cách thủ công vì có rất nhiều dữ liệu. Hoặc bạn có biết công thức tính chênh lệch thời gian chỉ đề cập đến các ID trùng lặp không? - Nếu giao dịch đó có cùng ID, tôi tính đó là 1
Irina

Có phải tất cả các mục theo thứ tự thời gian? Các ID được trộn lẫn với nhau hay tất cả các mục nhập cho cùng một ID được nhóm lại với nhau? Thời gian có qua nửa đêm không?
fixer1234

Câu trả lời:


0

Nếu bạn không bất lợi khi sử dụng VBA, tôi có thể quay lại với mã chi tiết hơn sau, nhưng bằng mã giả:

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

Bạn có thể đẩy các giá trị này vào bảng tính, vào một tệp hoặc vào hộp thông báo.


Xin chào vsoraas, cảm ơn bạn đã trả lời. Nhưng tôi nghĩ tôi không quen thuộc với VBA. Bạn có thể vui lòng giải thích tôi nên đặt mã đó ở đâu?
Irina

Đó không phải là mã hoàn chỉnh, vì vậy nó sẽ không có tác dụng gì - đó chỉ là một khái niệm để đánh giá sự quan tâm :) Tôi có thể viết nó ra cho bạn, nhưng tôi sẽ mất một lúc (Tôi không ở máy trạm của tôi được một lúc chưa).
Ăn chay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.