按服务与月份统计唯一用户的公式求解
按来源和月份统计唯一用户数的解决方案
问题背景
需要按来源和月份维度统计唯一用户数量,尝试了复杂数组公式但未得到预期结果,最后使用的公式如下:
=ArrayFormula(SUM(IF(L15=Data!$B$2:$B$200,1/(COUNTIFS(Data!$B$2:$B$200,$L15, Data!$J$2:$J$200,$A$14,Data!$C$2:$C$200,Data!$C$2:$C$200)),0)))
参数说明
L15:当前统计的目标来源名称Data!$B$2:$B$200:数据表中的来源数据列A14:当前统计的目标月份名称Data!$J$2:$J$200:数据表中的月份数据列Data!$C$2:$C$200:数据表中的用户数据列
数据示例
| # | 来源 | 用户 | 月份 |
|---|---|---|---|
| 1 | Website | Michael Govender | Jan-23 |
| 2 | Michael Govender | Feb-23 | |
| 3 | Website | Alison Naidoo | Feb-23 |
| 4 | Mathew Naidoo | Mar-23 | |
| 5 | Meagan Reddy | Jan-23 | |
| 6 | David Naidoo | Feb-23 | |
| 7 | Website | Tyron Maduray | Mar-23 |
| 8 | Clare Murtle | Jan-23 | |
| 9 | Hellen Pumpkin | Mar-23 | |
| 10 | Tyron Maduray | Feb-23 | |
| 11 | Elaine Harley | Feb-23 | |
| 12 | Michael Govender | Jan-23 |
解决方案
1. 最简方案:使用COUNTUNIQUEIFS(新版Excel/Google Sheets适用)
这个函数专为多条件唯一值统计设计,无需数组公式,语法直观:
=COUNTUNIQUEIFS(Data!$C$2:$C$200, Data!$B$2:$B$200, L15, Data!$J$2:$J$200, A14)
直接指定用户列,再添加来源等于L15、月份等于A14两个条件,即可自动统计符合条件的唯一用户数。
2. 兼容旧版Excel:使用SUMPRODUCT
如果无法使用COUNTUNIQUEIFS,可以用SUMPRODUCT实现相同逻辑:
=SUMPRODUCT((Data!$B$2:$B$200=L15)*(Data!$J$2:$J$200=A14)/COUNTIFS(Data!$B$2:$B$200, Data!$B$2:$B$200, Data!$J$2:$J$200, Data!$J$2:$J$200, Data!$C$2:$C$200, Data!$C$2:$C$200))
原理:先筛选出符合来源和月份的行,再用1/COUNTIFS计算每个用户在对应来源+月份下的出现频次,求和后得到唯一用户数。
3. 修正你原有的数组公式
原公式的问题在于IF条件仅判断了来源,未同时限定月份,导致计算范围错误。修正后公式:
=ArrayFormula(SUM(IF((Data!$B$2:$B$200=L15)*(Data!$J$2:$J$200=A14), 1/COUNTIFS(Data!$B$2:$B$200, L15, Data!$J$2:$J$200, A14, Data!$C$2:$C$200, Data!$C$2:$C$200), 0)))
调整IF的判断条件为同时匹配来源和月份,COUNTIFS也明确限定两个维度,确保计算的是目标范围内的用户出现次数。
内容的提问来源于stack exchange,提问作者user21357942
相关产品推荐
相关产品推荐

