Excel技术问询:统计特定产品首周出现次数并生成数据透视表
解决方案
步骤1:添加辅助列标记首次周记录
假设你的数据字段对应列如下(从第1行开始为表头):
- A: Date Received
- B: Week
- C: Year
- D: Product
- E: Factory
- F: Manufactury Date
- G: Expiration Date
新增辅助列H,命名为首次周标识,用公式判断当前行是否属于Factory+Product+Manufactury Date组合的首次出现周:
适用于Excel 365/2021(支持动态数组)
在H2单元格输入以下公式,按回车后自动填充至所有行:
=LET( key, E2&"|"&D2&"|"&F2, all_keys, E$2:E$200001&"|"&D$2:D$200001&"|"&F$2:F$200001, all_weeks, C$2:C$200001*100+B$2:B$200001, min_week, MINIFS(all_weeks, all_keys, key), current_week, C2*100+B2, IF(current_week=min_week, "首次周", "") )
逻辑解释:将年份和周数拼接为数值(如2024年第12周转为202412),通过MINIFS找到每个组合的最早周,再判断当前行是否属于该周,是则标记为「首次周」。
适用于旧版Excel(无动态数组支持)
在H2单元格输入以下数组公式,按Ctrl+Shift+Enter确认后下拉填充:
=IF(C2*100+B2=MIN(IF((E$2:E$200001=E2)*(D$2:D$200001=D2)*(F$2:F$200001=F2), C$2:C$200001*100+B$2:B$200001)), "首次周", "")
注意:旧版Excel处理20万行数组公式可能卡顿,建议先关闭自动计算,完成辅助列后再开启。
步骤2:创建目标数据透视表
- 选中包含辅助列的所有数据区域,插入数据透视表。
- 在透视表字段面板中:
- 将
Factory、Product、Manufactury Date拖至行区域 - 将
首次周标识拖至值区域,修改值字段设置为「计数」,并重命名为occurrences first week
- 将
- 启用明细钻取:右键透视表,选择「显示明细数据」,之后点击计数单元格即可查看对应明细记录。
关键优化说明
- 避免无分隔符拼接:你之前的拼接公式未加分隔符,易出现不同组合拼接后内容重复的问题(如Product="AB"+Factory="C"与Product="A"+Factory="BC"会拼成相同字符串),用
|这类特殊字符分隔可避免冲突。 - 大数量处理技巧:创建透视表时勾选「将数据添加到数据模型」,能大幅提升20万行数据的处理效率。
内容的提问来源于stack exchange,提问作者lipao255
相关产品推荐
相关产品推荐

