如何使用标准计算时间轴上的出现次数

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

这些值是活跃客户的数量 非常感谢

可能会有更好的解决方案,但辅助列更少,但这是我目前可以提供的。

准备

我在 AC 列中为 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_metis_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)