别再一个个筛选数零件了!一条聚合函数,517行BOM子件数秒出还自动排序

Lv.4 核心创作者
大家好,我是古老师。
今天聊一个 BOM 管理里特别基础、但天天要用的活:判断每个父件下面有多少个子件。
一、为什么要数零件
在物料清单(BOM)里,每一个父件下面挂着多少个零件,这个数字不是看着玩的。
它直接决定后面 MRP 运算展开的工作量:父件子件数越多,需求展开、欠料计算、齐套分析要处理的数据量就越大。所以在做计划之前,先把每个父件的零件数摸清楚,是很有必要的一步。
最原始的做法是什么?打开筛选,一个一个看。
点开父件编码的筛选面板,勾选列表里有多少个编码,就代表有多少个零件。比如 GU-02-0009 下面有 8 个,GU-01-0002 下面有 5 个。
107 个父件,你就得点 107 次筛选。数完还得自己拿笔记下来,再手动排个序看谁最多。这么干一次两次还行,天天这么干,纯粹是在浪费生命。
二、一条公式,一键判断并排序
做法其实很简单:用聚合函数,对父件编码做分组,再用统计函数数数,一键出结果,还自动按零件数从多到少排好序。
517 行 BOM,107 个父件,一条公式,结果直接溢出:
零件最多的是 GU-04-0002,1.21kg古冻冰包-盒,17 个子件;第二名 16 个,第三名 15 个,一目了然。
公式1:PIVOTBY 二维聚合(本篇推荐)
=PIVOTBY(A2:B518,,A2:A518,COUNTA,,0,-3)逐段拆一下:
A2:B518:行字段,父件编码+产品名称两列,作为分组依据
第二个参数留空:列字段省略,不搞交叉表,直接出长表
A2:A518 + COUNTA:值区放父件列,用 COUNTA 数每一组有多少行,也就是子件个数
最后的 -3:按计数结果降序排列,最多的排最前
这条公式的思路是:省去去重那些中间步骤,直接输出透视结果。速度快,效率高,唯一的门槛是需要新版本的 WPS 才支持。
公式2:GROUPBY 一维聚合
=GROUPBY(A2:B518,A2:A518,COUNTA,0,0,-3)和 PIVOTBY 是一家人,一个偏二维透视,一个偏一维分组,函数不一样,思路完全一样:
A2:B518:按父件两列分组
A2:A518:值区放父件列
COUNTA:数每组的行数
两个 0:第一个 0 不显示表头增强,第二个 0 关掉总计行
-3:按计数降序
两个 0 千万别省。我实测省略总计行参数后,结果末尾会多出一行"总计",后面接着做运算就会出乱子。
公式3:UNIQUE+COUNTIF 去重直数
=LET(p,UNIQUE(A2:B518),d,HSTACK(TAKE(p,,1),DROP(p,,1),COUNTIF(A2:A518,TAKE(p,,1))),SORT(d,3,-1))这是不走聚合函数的路线,三个函数搭积木:
UNIQUE 先对 A2:B518 去重,拿到不重复的父件清单
COUNTIF 的第二参直接吃数组条件,一个一个父件去源表里数出现次数
HSTACK 把编码、名称、数量拼成表,SORT 降序
这条路线的优势是速度,517 行数据几乎瞬间出结果;短板是如果同一个父件下子件编码有重复行,它会重复计数,用之前要确认数据是干净的。
三、五个方法的全家福
除了上面三个,这次实测一共整理了 5 个思路独立的解法,还有一个先筛选去重再逐父计数的 MAP 路线(天然抗重复),和一个排序后组界差分的向量化路线(全程无遍历)。
选型口诀就一句话:
;
数据有重复父件行,用 MAP 路线
;演示教学、讲思路,用方法 4、方法 5。
四、最后说一句
BOM 零件数这个信息,17、16 这些数字,后续 MRP 运算展开全都要用。
一个一个筛选去数,107 个父件就是 107 次点击;一条聚合函数,一次点击,结果还自动排好序。工具的差距不在难不难,在你想不想换个做法。
今天的公式建议直接抄进自己的 BOM 表里试一遍,父件列换成你自己的数据区域就行。
那你学会了吗?我是古老师,我们下期见。
术语解释
文章里出现的技术名词,一句话说清楚:
BOM(Bill of Materials,物料清单):工厂里一张"产品由什么组成"的清单,上面是父件(成品/半成品),下面挂着一层层子件(零件、原料)。
父件 / 子件:BOM 里的上下级关系。父件是装出来的东西,子件是装它用的零件。比如"果冻礼盒"是父件,里面那 17 种果冻、纸盒就是子件。
MRP(Material Requirements Planning,物料需求计划):根据订单和 BOM,把成品需求一层层展开算出"每个零件要买多少、什么时候买"的方法。
聚合函数:按某个字段分组后,每组算一个汇总值(求和、计数、平均)的函数,比如按父件分组数子件行数。
溢出:动态数组公式的结果自动铺满相邻空白单元格,不用下拉填充。
COUNTA:数"非空单元格个数"的统计函数,这里用来数每个父件下有几行子件。
UNIQUE:把一列或一片区域里重复的值去掉,只留不重复的清单。
古老师(古哥计划)|中小制造数字化专家|金山 KVP(金山办公最有价值专家)|金山多维表格应用场景专家|金山 WPS 社区优秀创作者
深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。
#多维表格 #工厂管理 #AI应用
本文由 AI 辅助创作
工具:灵犀专业版
模型:GLM-5.3-Flash

