Excel:基于多条件统计过去4周有驾驶记录的客户数量
解决过去4周有驾驶记录的客户数统计问题
方法1:Excel动态数组公式(适配Excel 365/2021)
假设你的数据在A:C列(A=Row、B=Client、C=Year&weeknum),在D2单元格输入以下公式,下拉自动填充即可:=COUNTA(UNIQUE(FILTER($B$2:$B$501, ($C$2:$C$501 >= C2-3) * ($C$2:$C$501 <= C2))))
- 逻辑说明:先筛选出当前周及过去3周的所有客户记录,再对客户ID去重,最后统计去重后的客户数量
- 注意:如果
Year&weeknum是文本格式(比如显示为"202304"),需要转成数值计算,把公式里的C2改成--C2,即:=COUNTA(UNIQUE(FILTER($B$2:$B$501, ($C$2:$C$501 >= --C2-3) * ($C$2:$C$501 <= --C2))))
方法2:传统数组公式(适配旧版Excel)
如果你的Excel不支持动态数组,用以下数组公式(输入后按Ctrl+Shift+Enter确认,下拉填充):=SUM(1/COUNTIFS($B$2:$B$501, $B$2:$B$501, $C$2:$C$501, ">="&C2-3, $C$2:$C$501, "<="&C2))
- 逻辑说明:通过COUNTIFS统计每个客户在目标4周内的出现次数,用1除以次数得到每个唯一客户的贡献值(出现N次就得到N个1/N,相加为1),最后求和得到总客户数
- 文本格式的
Year&weeknum同样要转数值,公式改成:=SUM(1/COUNTIFS($B$2:$B$501, $B$2:$B$501, $C$2:$C$501, ">="&--C2-3, $C$2:$C$501, "<="&--C2))
方法3:Power Query(适合大数据量,支持自动更新)
如果数据集后续还要更新,用Power Query更高效:
- 选中数据区域,点击「数据」选项卡 → 「从表格/区域」导入Power Query
- 添加自定义列,输入公式:
=List.Count(List.Distinct(Table.SelectRows(Source, each [Year&weeknum] >= [Year&weeknum]-3 and [Year&weeknum] <= [Year&weeknum])[Client])) - 点击「关闭并上载」,把结果导回Excel;后续数据更新时,右键点击表格选择「刷新」即可自动重新计算
内容的提问来源于stack exchange,提问作者florisviss
相关产品推荐
相关产品推荐

