根据日期差异统计实例数(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))
我有以下数据:
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))