如何统计已售产品各完整配置的销售数量
产品配置销量统计实现方案
前置规则确认
统计逻辑梳理如下:
- 同一件成品的所有配件对应同一个销售单号+行号组合,以此作为唯一分组标识
- 同一分组下所有Part number拼接为完整配置字符串
- 仅统计Config列标记为
C的行避免重复计数,最终统计各配置字符串的出现次数
实现方案
方案一:Excel原生公式(适配Excel 2019/365及以上版本,无需宏)
- 新增「唯一分组ID」辅助列,公式为:
=[@销售单号]&"-"&[@行号]
所有属于同一件成品的行会得到完全相同的分组ID - 新增「完整配置字符串」列,公式为:
=TEXTJOIN("-",TRUE,FILTER([Part number],[唯一分组ID]=[@唯一分组ID],""))
可根据需要调整拼接分隔符(示例中用短横线,也可替换为加号、空格等) - 筛选全表中Config列值为
C的行,基于筛选结果插入数据透视表 - 透视表行区域选择「完整配置字符串」,值区域选择「唯一分组ID」,汇总方式设为计数,降序排序后即可得到各配置的销量排名
方案二:VBA自定义函数(适配2019以下的旧Excel版本)
如果你的Excel版本不支持TEXTJOIN和FILTER函数,可通过自定义函数实现分组拼接:
- 按
Alt+F11打开VBA编辑器,插入模块,粘贴如下代码:
Function 拼接配置(分组ID As String, 分组列范围 As Range, Part号列范围 As Range) As String Dim 行序号 As Long Dim 拼接结果 As String 拼接结果 = "" For 行序号 = 1 To 分组列范围.Rows.Count If 分组列范围.Cells(行序号).Value = 分组ID Then If 拼接结果 <> "" Then 拼接结果 = 拼接结果 & "-" 拼接结果 = 拼接结果 & Part号列范围.Cells(行序号).Value End If Next 行序号 拼接配置 = 拼接结果 End Function
- 同样先新增「唯一分组ID」辅助列,再在配置字符串列调用自定义函数:
=拼接配置([@唯一分组ID],[唯一分组ID],[Part number]) - 后续透视表统计逻辑和方案一完全一致
内容的提问来源于stack exchange,提问作者kara holtz
相关产品推荐
相关产品推荐

