如何解决如何使用标准计算沿时间线的出现次数
我有一个包含 3 列的表:费用、client_id、日期。 日期有客户每天半年的费用记录。 有些客户每天花费很多,但有些则不然。 支出从零到几百不等。 我想对每天花费超过 50 美元的活跃客户进行分组/计数,并计算在 0-30 天、30-60 天、60-90 天、90-120 天、120-150 天之间有多少活跃客户, 150+。 我的意思是如果客户在 40 天内每天至少花费 50 美元,我会将他添加到 30-60 天列。 客户 ID 每天只出现一次。
费用 | client_id | 日期 |
---|---|---|
20 | 1 | 01/01/2000 |
60 | 2 | 01/01/2020 |
70 | 3 | 01/02/2020 |
结果应该是这样
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$1:B1,B2,C$1:C1,C2-1)>0,FALSE)
。 -
consecutive_group 为客户支出高于或等于阈值的每组连续天数分配一个数字。
F2
中的公式为=IF(AND(D2=TRUE,E2=TRUE),MAXIFS(F$1:F1,B$1:B1,B2),B2)+1)
。当 criteria_met 和 is_consecutive 的组合为 FALSE 时,组数加一。 -
days_per_group 计算每个 client_id 和 consecutive_group 的天数。
G2
中的公式为=COUNTIFS(B$1:B2,F$1:F2,F2)
。 -
max_per_group 确保每个连续组只考虑最大连续天数。
H2
中的公式为=IF(G2=MAXIFS(G:G,B:B,F:F,F2),G2,0)
。
结果表
-
labels 创建标题。
J3
中的公式为=J2&"-"&K2-1&" days"
-
values 计算给定阈值之间的数字出现的频率。
J4
中的公式为=COUNTIFS($H:$H,">="&I$2,$H:$H,"<"&J$2)
。
要求
- 每位客户每天只能有一个条目
- 源列表 (
A:C
) 必须按日期排序
如果您需要更多信息,请告诉我。
,如何计算 K4 中的值?
=COUNTIFS($H:$H,">="&J$2,"<"&K$2)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。