表格BOM分不清自制件采购件,AI写了5个公式,最快的43个字符

古哥计划
古哥计划 Lv.4 核心创作者KVP

Lv.4 核心创作者

🧩表格BOM分不清自制件采购件,AI写了5个公式,最快的43个字符

不少工厂还没上信息化,物料清单就是一张Excel表。计划员排产、采购下单之前,都得先搞清楚一件事:这几百个子件里,哪些是本厂自己做的自制件,哪些是外面买的采购件?

人工的做法,是对着BOM一行行凭经验标。500行标下来眼睛都花了,过两天BOM一改版,又得从头再来一遍。

其实这事一行公式就能解决。

判断标准就一句话:
这个子件有没有在父件列里出现过?出现过,说明它自己也挂在别的件下面当"父件",本厂能生产,就是自制件;没出现过,只能外购,就是采购件。

数据结构很简单:A列是父件编码,C列是子件编码,一共517行,G列输出子件属性。下面5个公式,都是这个原理,按速度排好了队。

一、方法1:COUNTIF计数(43字符,速度98)

=IF(COUNTIF(A2:A518,C2:C518)>0,"自制件","采购件")

COUNTIF拿C列子件编码到A列父件列里逐个计数,出现次数大于0,说明这个子件同时也是别的行的父件,自制件;等于0,采购件。

有个快速验证的小技巧:把条件里的">0"去掉,公式返回的就是一个数字——有数字,就代表它在父件列那边有;没有就是0。理解了这层,公式就不用死记了。

单函数直数,一步到位,类似向量化,速度当之无愧第一名。

二、方法2:XLOOKUP查找(58字符,速度95)

=IF(ISERROR(XLOOKUP(C2:C518,A2:A518,A2:A518)),"采购件","自制件")

这是查找引用的思路:拿C列子件去A列父件里找,查找值是C列,查找区域和返回区域都是A列。

  • 找到了 → 有下层,自制件

  • 找不到(返回错误)→ ISERROR接住,采购件

查找家族的标准写法,可读性最好,就是比COUNTIF略慢一点。

三、方法3:VSTACK堆叠总量对比(107字符,速度85)

=LET(c,C2:C518,s,VSTACK(A2:A518,c),MAP(c,LAMBDA(x,IF(SUMPRODUCT(--(s=x))>COUNTIF(C2:C518,x),"自制件","采购件"))))

思路完全不同:把父件列和子件列VSTACK堆成一个总序列,数每个子件在总序列里出现的总次数,跟它在自己这一列(子件列)的出现次数比——多出来的次数,只可能来自父件列,那就是自制件。

这里踩过一个坑,值得单独说:一开始想当然用"总次数大于1"来判断,结果517行里错了一大半。原因是同一个子件会被多个父件引用,它在子件列自己就出现好几次,总次数大于1根本不代表父件列有它。必须跟它自身次数比,这个逻辑才是闭环的。

这个写法字符长、速度也没优势,家族独立的价值大于实用价值,当思维扩展题看。

四、方法4:MAP+MATCH遍历(64字符,速度70)

=MAP(C2:C518,LAMBDA(x,IF(ISNA(MATCH(x,A2:A518,0)),"采购件","自制件")))

MAP对C列逐行执行,每行拿MATCH到A列精确查找,ISNA判断没找到就是采购件。逐行加工的好处是以后要加判断条件好扩展,坏处是大数据量下速度垫底。

五、方法5:TEXTJOIN+SEARCH文本定界(94字符,速度60)

=LET(c,C2:C518,t,","&TEXTJOIN(",",,A2:A518)&",",IF(ISNUMBER(SEARCH(","&c&",",t)),"自制件","采购件"))

把A列517个父件编码合并成一串逗号分隔的文本,子件编码前后也包上逗号再去搜——定界符防止"1001"误命中"21001"这种包含关系的错判。

硬伤要提醒:TEXTJOIN的结果超过32767字符(大约1800行)直接报错,编码里含逗号也会乱,所以这套只能小表玩玩,思路轻巧但不扛量。

六、五个公式全家福

AI最后把5个方法整理成一张公式汇总表:排名、速度、字符数、公式、精简思路、详细思路、推荐指数、功能限制,一页看全。

方法1为什么是第一名?它是一个单函数的向量化解法,全程不逐行循环,字符也最短。方法5字符也不算长,但TEXTJOIN拼接本身慢,再加上硬伤多,只能排最后。

七、一个说在前面的边界

这套公式只认
两态
:自制件、采购件。
委外件识别不出来。

委外件
在系统里通常就归在采购件里,要单独区分,得先给"
委外件
"下一个明确的定义。中小工厂的颗粒度一般没必要细到这一步,先按
两态
走,够用。

最后说一句

以前人工标属性,500行的BOM要标半天;现在一个公式回车,整列瞬间出结果,BOM改成什么样都自动跟着变。

工具是次要的,"子件在父件列出现过,就是自制件"这个判断逻辑才是真正的资产。把它记下来,换什么表格都能用。

关注我,学习生产排程,学习AI知识。


术语解释

文章里出现的技术名词,一句话说清楚:

BOM(Bill of Materials,物料清单):工厂里记录"一个产品由哪些料组成"的表,父件是装出来的成品或半成品,子件是组成它的料。

动态数组公式:一个公式自动向下溢出一整列结果的写法,不用拖填充,数据变了结果跟着变。

XLOOKUP:跨区域查找函数,拿一个值去另一列里找,找到就返回对应内容。

COUNTIF:条件计数函数,统计某个值在一片区域里出现了几次。

VSTACK:把几列数据上下堆成一列的函数,像把几摞纸叠成一摞。

LAMBDA:在公式里临时定义的小函数,MAP每扫到一行就调用它一次。

TEXTJOIN:把一片区域的内容合并成一个字符串,中间可以加分隔符,但有32767字符的上限。


古老师(古哥计划)|中小制造数字化专家|金山 KVP(金山办公最有价值专家)|金山多维表格应用场景专家|金山 WPS 社区优秀创作者

深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。

#多维表格 #工厂管理 #AI应用

本文由 AI 辅助创作

工具:灵犀专业版

模型:GLM-5.3-Flash 超高

广东省
浏览 39
收藏
3
分享
3 +1
+1
全部评论