甚至可以在 Excel 中检查 A 列中的重复项,然后比较 B 列中的相应日期吗?

Is it even possible in Excel to check for duplicates in column A and then compare the corresponding dates in column B?

我通常什么都不问,但我碰壁了。我什至不知道这是否可能。

假设 A 列是学生# 的列表,B 列是每个学生 phone 大学的日期列表。即:

123456  9/21/2013
123456  9/22/2013
123456  9/25/2013
124343  10/10/2014
324242  11/15/2014

所以 ID 123456 的学生打了 3 次电话。但是我想具体能够计算的是,如果一个学生有不止一个电话,他在最初的电话后的48小时内回拨了多少次。这里的答案是 123456 在第一次出现后的 48 小时内回调了 1 次。

感谢任何帮助。

微笑,有可能:)

首先将所有学生的 ID(无重复)放入一个集合中(假设他们从 Range("A1") 开始):

Dim studentsID As New Collection
For j = 1 To Range("A1").End(xlDown).Row
    alreadyThere = False 
    For k = 1 To studentsID.Count
        If Range("A" & j) = studentsID(k) Then
            alreadyThere = True
            Exit For
        End If
    Next k
    If alreadyThere = False Then studentsID.Add Range("A" & j).Value 'if student is not there yet, add it to the collection
Next j

这计算了一个学生总共被叫了多少次 ...因为你问过但我想具体计算一下是否有一个学生不止一个电话

所以你检查是否有不止一个学生打来的电话:

For j = 1 To studentsID.Count 'for each student in your list
    count = 0
    For k = 1 To Range("A1").End(xlDown).Row
        If Range("A" & k) = studentsID(j) Then count = count + 1 'count how many occurrencies there are in column A    
    Next k
    If count > 1 Then MsgBox "The student " & studentsID(j) & " called us " & count & " times"
Next j

虽然这会计算学生在过去 48 小时内打来电话的次数

...然后按照相同的逻辑计算他在过去 48 小时内打了多少次电话:

todayIs = DateSerial(Year(Now()), Month(Now()), Day(Now()))
twoDaysAgoWas = todayIs - 2 
For j = 1 To studentsID.Count
    count = 0
    For k = 1 To Range("A1").End(xlDown).Row
        If (Range("A" & k) = studentsID(j)) And (Range("B" & k) >= twoDaysAgoWas) Then count = count + 1    
    Next k
    If count > 1 Then MsgBox "The student " & studentsID(j) & " called us " & count & " times during the last 48 hours."
Next j

您可以尝试使用这些代码片段来构建您想要的输出(例如,您最有可能希望将计数器存储在变量中并将它们打印到统计数据中,而不是使用消息框 sheet)。

注意

如果您需要 exact 最后 48 小时,您可能还想使用函数 TimeSerial(Hour,Minute,Second).

假设您的数据从 A2 开始(第 1 行用于标题),然后在 C2 中尝试以下公式并将其复制下来:

=COUNTIFS(A:A,A2,B:B,">"&B2,B:B,"<="&B2+2)

也就是说 "Count all cases where the value is col A is the current student and where the date is between the date on the current row and 2 days into the future"。

如果可能同一天有多个电话,那么这样可能更好:

=COUNTIFS(A:A,A2,B:B,">="&B2,B:B,"<="&B2+2)-1

-1 从计数中删除每一行与其自身的匹配)。

如果 48 小时需要更精确,那么您可能需要改变公式以使用小时而不是天,但相同的公式结构应该有效。