根据日期差异统计实例数(Excel/VBA)

Counting number of instances according to date difference (Excel/VBA)

我有以下数据:

Excel Table Screen Capture

即:

收单方ID ||| 目标 ID(没用)||| 日期

123 |||第456章2020 年 1 月

789 ||| 910||| 2019 年 2 月 28 日

我想要一个额外的列,其中我有一个关于每个收购方在过去 3 年中进行了多少次收购的计数。 因此,对于每个具有给定日期的收单方 ID,我需要计算该 ID 在距该日期不到 3 年的日期出现了多少次。

因此,如果收购方在 2020 年、2016 年、2015 年和 2014 年进行了收购,则在每种情况下,该收购方的计数分别为 0、2、1、0。

我已经尝试使用 COUNTIFS()、IF ()、VLOOKUP(),但我无法得到想要的结果,因为一旦满足条件,它就会对所有 ID 求和,而不管日期如何。

我也尝试在 VBA 上写一个宏,但我对语言的了解基本上是 0。我 post 代码以防它能更好地理解问题


Dim Sheet As Worksheet

Set dbs = ThisWorkbook.Sheets("db")

Dim i As Integer, j As Integer, count As Integer

lr = dbs.Cells(Rows.count, 1).End(xlUp).Row 
x = 0


For i = 2 To lr
    For j = i + 1 To lr
    Set myrange = Range("i:lr")
        If dbs.Cells(i, 4).Value - Application.WorksheetFunction.VLookup(dbs.Cells(i, 4).Value, myrange, 4, False) < 3 Then
        'I get a bug with Application.WorksheetFunction.VLookup, it might be that an error must be dealt with in case of missing values
        count = count + 1
        End If
    Next j
Next i

dbs.Cells(i, 5).Value = count

End Sub

非常感谢任何帮助,提前致谢。

对于 A2:A10 中的收购方和 C2:C10 中的日期,此公式进入 D2 并计算满足以下所有条件的记录数:

  • 收单行ID与A2相同
  • 日期小于 C2 中的日期
  • 日期大于或等于 C2 中日期的 3 年

=COUNTIFS($A:$A,A2,$C:$C,"<"&C2,$C:$C,">="&EDATE(C2,-36))