按用户按时间段动态计算数据平均值(替代方案)
需求说明
- 选择特定用户后,将该用户对应年月的指标自动填充至日历模板中
- 计算每位用户每月的"Yes"回答占比:统计问题1/2/3中所有"Yes"的数量,除以"Yes"和"No"的总数量(NA不纳入统计)
- 现有公式
=COUNTIF(D2:F4,"Yes")/SUM(COUNTIFS(D2:F4,{"No","Yes"}))仅支持逐个单元格计算,无法适配持续新增、按用户+月份分组的多记录数据
注意:实际数据中同一月份可能存在多条用户记录,公式需支持该场景
示例数据
| 姓名 | 日期 | 保单编号 | 问题1 | 问题2 | 问题3 |
|---|---|---|---|---|---|
| Fernando Mullen | 2023/1/19 | 732498 | NA | NA | No |
| Fernando Mullen | 2023/1/25 | 354924 | Yes | Yes | Yes |
| Fernando Mullen | 2024/9/23 | 669720 | NA | Yes | No |
| Fernando Mullen | 2024/7/14 | 602150 | No | Yes | NA |
| Fernando Mullen | 2023/10/16 | 644143 | NA | NA | NA |
| Shay Gibson | 2023/4/25 | 442807 | Yes | Yes | Yes |
| Shay Gibson | 2023/12/4 | 308642 | NA | NA | No |
| Shay Gibson | 2023/12/28 | 407548 | NA | NA | NA |
| Shay Gibson | 2023/9/26 | 237033 | NA | NA | NA |
| Shay Gibson | 2023/12/19 | 410126 | NA | NA | NA |
| Tyler Long | 2023/4/11 | 803544 | NA | NA | No |
| Tyler Long | 2024/11/5 | 399732 | Yes | Yes | Yes |
| Tyler Long | 2024/11/11 | 296820 | NA | NA | NA |
| Tyler Long | 2024/3/27 | 791065 | NA | NA | NA |
| Wrenley Fleming | 2024/4/26 | 463278 | NA | NA | Yes |
| Wrenley Fleming | 2024/9/13 | 774485 | NA | NA | NA |
| Wrenley Fleming | 2024/9/15 | 244185 | No | Yes | NA |
| Wrenley Fleming | 2024/7/22 | 506417 | NA | NA | NA |
| Wrenley Fleming | 2024/12/26 | 339160 | NA | NA | NA |
解决方案
1. 动态计算每月Yes占比(适配新增数据)
假设数据在A2:F20区域,指定用户输入在H2,指定年月输入在I2(格式如"2023/1"),使用以下公式自动计算占比:
=LET( 筛选数据, FILTER(D2:F20, (A2:A20=H2)*TEXT(B2:B20,"yyyy/mm")=I2), Yes总数, COUNTIF(筛选数据,"Yes"), 有效总数, COUNTIF(筛选数据,"Yes")+COUNTIF(筛选数据,"No"), IF(有效总数=0, 0, Yes总数/有效总数) )
- 通过
TEXT(B2:B20,"yyyy/mm")统一日期格式,实现年月分组匹配 FILTER自动筛选目标用户对应年月的所有记录- 新增数据后刷新表格即可自动更新结果,无需手动调整公式范围
如果需要一次性生成所有用户的每月占比报表,使用动态数组公式:
=LET( 所有用户, UNIQUE(A2:A20), 所有年月, UNIQUE(TEXT(B2:B20,"yyyy/mm")), 交叉表, MAKEARRAY(ROWS(所有用户)+1, ROWS(所有年月)+1, LAMBDA(r,c, IF(r=1, IF(c=1,"用户",INDEX(所有年月,c-1)), IF(c=1, INDEX(所有用户,r-1), LET( 当前用户, INDEX(所有用户,r-1), 当前年月, INDEX(所有年月,c-1), 数据区域, FILTER(D2:F20, (A2:A20=当前用户)*TEXT(B2:B20,"yyyy/mm")=当前年月), Yes数, COUNTIF(数据区域,"Yes"), 有效数, Yes数+COUNTIF(数据区域,"No"), IF(有效数=0, "-", Yes数/有效数) ) ) ) ) ), 交叉表 )
输入后会自动生成完整的用户-年月占比矩阵,新增数据后重新计算即可更新报表。
2. 联动日历模板自动填充
在日历的目标月份单元格中,使用XLOOKUP匹配用户和年月,引用上述计算结果:
=XLOOKUP(H2&"|"&"2023/1", 所有用户&"|"&所有年月, 占比区域, 0)
其中所有用户&"|"&所有年月是用户与年月的组合匹配键,占比区域为动态生成的占比数据列。
内容的提问来源于stack exchange,提问作者Mo-L
相关产品推荐
相关产品推荐

