如何使用标准计算时间轴上的出现次数
How to count appearences along a timeline with criteria
我有一个包含 3 列的 table:费用、client_id、日期。
日期记录客户半年每天的费用。
有些客户每天花费很多,但有些则没有。
费用从零到几百不等。
我想 group/count 每天花费超过 50 美元的活跃客户,并计算在 0-30 天、30-60 天、60-90 天、90-120 天、120-150 之间有多少客户活跃天,150+。
我的意思是,如果客户在 40 天内每天至少花费 50 美元,我会将他添加到 30-60 天的列中。
客户 ID 每天只出现一次。
费用
client_id
日期
20
1
2000 年 1 月 1 日
60
2
2020 年 1 月 1 日
70
3
2020 年 1 月 2 日
结果应该是这样
0-30 天
30-60 天
60-90 天
90-120 天
9
3
12
20
这些值是活跃客户的数量
非常感谢
可能会有更好的解决方案,但辅助列更少,但这是我目前可以提供的。
准备
我在 A
到 C
列中为 10 个客户生成了一些随机数据,一个月,费用限额为 100。您将不得不调整 费用阈值 和 天数范围 满足您的需求。
辅助列和公式
- criteria_met 检查费用是否高于或等于给定阈值(此处为 10)。
D2
中的公式为 =IF(A2>=10,TRUE,FALSE)
.
- is_consecutive 检查客户前一天是否有入场。
E2
中的公式为 =IF(COUNTIFS(B:B1,B2,C:C1,C2-1)>0,TRUE,FALSE)
.
- consecutive_group 为客户支出高于或等于阈值的每组连续天数分配一个数字。
F2
中的公式为 =IF(AND(D2=TRUE,E2=TRUE),MAXIFS(F:F1,B:B1,B2),MAXIFS(F:F1,B:B1,B2)+1)
。每当 criteria_met 和 is_consecutive 的组合为 FALSE 时,组数字加一
- days_per_group统计每client_id和[=106的天数=]。
G2
中的公式为 =COUNTIFS(B:B2,B2,F:F2,F2)
.
- max_per_group 确保每个连续组仅考虑最大连续天数。
H2
中的公式为 =IF(G2=MAXIFS(G:G,B:B,B2,F:F,F2),G2,0)
.
结果table
labels 创建标题。 J3
中的公式为 =J2&"-"&K2-1&" days"
values 计算给定阈值之间的数字出现的频率。 J4
中的公式为 =COUNTIFS($H:$H,">="&I,$H:$H,"<"&J)
.
要求
- 每个客户每天只能一次进入
- 源列表 (
A:C
) 必须按日期 排序
如果您需要更多信息,请告诉我。
如何计算K4中的值?
=COUNTIFS($H:$H,">="&J,$H:$H,"<"&K)
我有一个包含 3 列的 table:费用、client_id、日期。 日期记录客户半年每天的费用。 有些客户每天花费很多,但有些则没有。 费用从零到几百不等。 我想 group/count 每天花费超过 50 美元的活跃客户,并计算在 0-30 天、30-60 天、60-90 天、90-120 天、120-150 之间有多少客户活跃天,150+。 我的意思是,如果客户在 40 天内每天至少花费 50 美元,我会将他添加到 30-60 天的列中。 客户 ID 每天只出现一次。
费用 | client_id | 日期 |
---|---|---|
20 | 1 | 2000 年 1 月 1 日 |
60 | 2 | 2020 年 1 月 1 日 |
70 | 3 | 2020 年 1 月 2 日 |
结果应该是这样
0-30 天 | 30-60 天 | 60-90 天 | 90-120 天 |
---|---|---|---|
9 | 3 | 12 | 20 |
这些值是活跃客户的数量 非常感谢
可能会有更好的解决方案,但辅助列更少,但这是我目前可以提供的。
准备
我在 A
到 C
列中为 10 个客户生成了一些随机数据,一个月,费用限额为 100。您将不得不调整 费用阈值 和 天数范围 满足您的需求。
辅助列和公式
- criteria_met 检查费用是否高于或等于给定阈值(此处为 10)。
D2
中的公式为=IF(A2>=10,TRUE,FALSE)
. - is_consecutive 检查客户前一天是否有入场。
E2
中的公式为=IF(COUNTIFS(B:B1,B2,C:C1,C2-1)>0,TRUE,FALSE)
. - consecutive_group 为客户支出高于或等于阈值的每组连续天数分配一个数字。
F2
中的公式为=IF(AND(D2=TRUE,E2=TRUE),MAXIFS(F:F1,B:B1,B2),MAXIFS(F:F1,B:B1,B2)+1)
。每当 criteria_met 和 is_consecutive 的组合为 FALSE 时,组数字加一 - days_per_group统计每client_id和[=106的天数=]。
G2
中的公式为=COUNTIFS(B:B2,B2,F:F2,F2)
. - max_per_group 确保每个连续组仅考虑最大连续天数。
H2
中的公式为=IF(G2=MAXIFS(G:G,B:B,B2,F:F,F2),G2,0)
.
结果table
labels 创建标题。
J3
中的公式为=J2&"-"&K2-1&" days"
values 计算给定阈值之间的数字出现的频率。
J4
中的公式为=COUNTIFS($H:$H,">="&I,$H:$H,"<"&J)
.
要求
- 每个客户每天只能一次进入
- 源列表 (
A:C
) 必须按日期 排序
如果您需要更多信息,请告诉我。
如何计算K4中的值?
=COUNTIFS($H:$H,">="&J,$H:$H,"<"&K)