我有 USER_ID、EVENT_ID 和 DATE,我需要检查哪些事件是真实的。
真实事件是每个用户的第一个事件,并且是距离最后一个真实事件至少 10 天后的每一个事件。
我所做的是按 USER_ID 和日期对它们进行排序,并使用此论坛
=IF(A2<>A1;1;IF(C2-C1>=10;1;0))
,但这样它会计算当前事件和上一个事件之间的日期差异,而不是到最后一个真实事件的日期差异。
如果我在 01 05 和 13 发生来自一个用户的事件,它会给我 1, 0, 0,但我需要与 01 的最后一个真实事件进行比较,它应该给我 1, 0 ,1。
我怎样才能做到这一点。
| USER ID | EVENT ID | DATE | What I get | What I should get |
|:---------|:---------:|:------------:| :------------:|:------------: |
| 1 | 4 | 01.01.2020 | 1 | 1 |
| 1 | 5 | 05.01.2020 | 0 | 0 |
| 1 | 6 | 13.01.2020 | 0 | 1 |
| 2 | 7 | 03.01.2020 | 1 | 1 |
| 2 | 8 | 05.01.2020 | 0 | 0 |
| 2 | 9 | 06.01.2020 | 0 | 0 |
用户的事件数量不固定。
这是 VBA 中的解决方案。
Sub Button1_Click()
'data
Cells.Clear
[a2:b7] = [{1,1;1,5;1,13;2,3;2,5;2,6}]
'code
lre = [b2]
For i = 2 To 7
If Cells(i, 1) <> Cells(i - 1, 1) Then
Cells(i, 3) = 1
ElseIf Cells(i, 2) - lre >= 10 Then
Cells(i, 3) = 1
lre = Cells(i, 2)
Else
Cells(i, 3) = 0
End If
Next i
End Sub
它使用与您的公式相同的逻辑,但使用
lre
变量来存储最后一个真实事件的日期。
=spl("=E(?).new(if('USER ID'!='USER ID'[-1],(t=DATE,1),if(DATE-t>=10,(t=DATE,1),0)):isTrue)",A1:C7)