Excel 中多行之间的日期差异

问题描述 投票:0回答:2

我有 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           |

用户的事件数量不固定。

桌子 enter image description here

excel vba
2个回答
1
投票

这是 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
变量来存储最后一个真实事件的日期。

output


0
投票
=spl("=E(?).new(if('USER ID'!='USER ID'[-1],(t=DATE,1),if(DATE-t>=10,(t=DATE,1),0)):isTrue)",A1:C7)
© www.soinside.com 2019 - 2024. All rights reserved.