🔥 挑战用WPS灵犀开发APS排程系统(三):产能负荷计算,工时汇总一次到位

🔥 挑战用WPS灵犀开发APS排程系统,全程古老师不写一行代码
📌
前两篇,我们把产品资料库和销售订单立起来了:150个存货、单号规则、主子表、订单类型,一次到位。
📌今天进入第三个主题——产能负荷计算,也就是 RCCP(粗能力计划)。
很多人做排程,第一步就栽在"我到底有没有能力接下这批活"。
订单堆在那里,客户催交期,你拍着脑袋说"能做",结果产线爆了、交期全乱。接单前先算算负荷,是排程的第一步,也是最容易被跳过的一步。
RCCP听着唬人,说白了就一句话:每个订单要花多少工时,加起来对比一下可用产能,够不够,一眼看清。
这一篇,就是把"工时"这个底数先算清楚,再按不同维度汇总。
一、先算"订单用时":UPH 从哪来
要算工时,先得有单件标准工时。这数字哪来?
前一篇产品资料库里,我们已经建了装配UPH——每小时产量。迷你煲72台/小时,商用煲29台/小时,容量越大越慢。
那一个订单要做多少小时?很简单:
订单用时 = 订单数量 ÷ UPH
比如 309 台 3L 电饭煲,UPH 是 58,用时就是 309÷58 ≈ 5.33 小时。
但这个 UPH 在产品资料表里,订单在销售订单-子表里,怎么对起来?
靠存货代码。每个订单行都挂着存货代码,拿它去产品资料表查 UPH 就行。

二、两个公式:UPH 和订单用时
在销售订单-子表里,我让灵犀建了两个公式字段。
第一个,UPH——从产品资料表按存货代码取回装配UPH:

=IFNA(XLOOKUP([@存货代码],产品资料![存货代码],产品资料![装配UPH]),"")逻辑拆开:
XLOOKUP([@存货代码],...)→ 拿本行的存货代码去产品资料表找 产品资料![装配UPH]→ 找到了,把对应的装配UPH带回来 IFNA(...,"")→ 查不到就空着,不报错
第二个,订单用时——订单数量除以 UPH:
=IFNA([@订单数量]/[@UPH],0)这里有个细节:为什么 UPH 不手填,要用公式从产品资料带?
因为同一款产品,UPH 只在一处维护。产品资料里 UPH 改了,订单表自动跟着变,不会出现"产品资料 58、订单表还记着 59"这种两本账。
📌
结果:150 行订单,UPH 全部带回来了,订单用时全部算出来,空值 0、负数 0。
标准工时只在一处维护,别的表引用它。这就是"单一数据源",后面排程全靠这个底数。
三、订单工时汇总:按订单类型 SUMIFS

单行工时算出来了,但老板问的是总量——这批单总共多少小时?我有没有能力接?
于是新建一张 订单工时汇总 表,按订单类型汇总。
表里两列:
- 订单类型
:文本,预填 3 行——常规订单、样板订单、试产订单 - 工时汇总
:公式,SUMIFS 从子表把对应类型的订单用时加起来
工时汇总公式:
=SUMIFS('销售订单 - 子表'![订单用时],'销售订单 - 子表'![订单类型],[@订单类型])拆开看:
'销售订单 - 子表'![订单用时]→ 要求和的对象,是子表的订单用时 '销售订单 - 子表'![订单类型]→ 判断依据,子表的订单类型 [@订单类型]→ 条件是本行这个订单类型
结果出来很直观:
订单类型 | 订单笔数 | 工时 |
常规订单 | 127 | 620.88 小时 |
样板订单 | 3 | 0.16 小时 |
试产订单 | 20 | 21.83 小时 |
一眼看出:常规订单占了绝对大头,620.88 小时。样板、试产加起来没多少,但这类单不能占常规产能,单独列出来才能看明白。

四、类型、容量:把订单拆到产品维度

按订单类型看完了,还不够。老板可能问:"3L 的活有多少?圆煲有多少?"
这就要把订单按产品维度拆开。但子表里只有存货代码,没有"类型、容量"这种看得懂的分类。
没关系,产品资料表里早就有类型(圆煲/方煲/迷你煲/商用煲)和容量(1.2L~6L)了,再让灵犀在子表里建两个查找引用公式,按存货代码带过来:
类型:
=IFNA(XLOOKUP([@存货代码],产品资料![存货代码],产品资料![类型]),"")容量:
=IFNA(XLOOKUP([@存货代码],产品资料![存货代码],产品资料![容量]),"")和 UPH 一个套路,还是靠存货代码查产品资料。150 行全部带回来,空值 0。
现在子表里每行订单,既能看"这是什么单"(订单类型),又能看"这是什么产品"(类型、容量)。

五、类型工时汇总、容量工时汇总

维度有了,直接复制"订单工时汇总"的思路,再建两张表。
类型工时汇总:按类型汇总工时
类型 | 工时 | 订单笔数 |
圆煲 | 265.33 小时 | 64 |
方煲 | 277.51 小时 | 64 |
迷你煲 | 48.50 小时 | 14 |
商用煲 | 51.54 小时 | 8 |
容量工时汇总:按容量汇总工时
容量 | 工时 | 订单笔数 |
2L | 45.63 小时 | 14 |
2.5L | 54.91 小时 | 16 |
3L | 418.06 小时 | 90 |
4L | 24.24 小时 | 8 |
1.2L | 31.76 小时 | 10 |
1.6L | 16.74 小时 | 4 |
5L | 42.33 小时 | 7 |
6L | 9.21 小时 | 1 |
规律很明显:3L 占了 418 小时,绝对的主力。这和产品资料里"3L 是线上爆款、占 30%"的设置完全对上了。
公式和订单工时汇总一模一样,只把条件字段换成"类型""容量":
=SUMIFS('销售订单 - 子表'![订单用时],'销售订单 - 子表'![类型],[@类型])
=SUMIFS('销售订单 - 子表'![订单用时],'销售订单 - 子表'![容量],[@容量])
六、数量、笔数、金额:三张表补齐四维

光有工时还不够。接单要看量、看钱。
我又在三张汇总表(订单工时汇总、类型工时汇总、容量工时汇总)里,各补了三个字段:
- 订单数量
:SUMIFS 把子表订单数量加起来 - 订单笔数
:COUNTIFS 数一数有几行订单 - 订单金额
:SUMIFS 把子表金额加起来
以类型工时汇总为例:
=SUMIFS('销售订单 - 子表'![订单数量],'销售订单 - 子表'![类型],[@类型]) → 订单数量
=COUNTIFS('销售订单 - 子表'![类型],[@类型]) → 订单笔数
=SUMIFS('销售订单 - 子表'![金额],'销售订单 - 子表'![类型],[@类型]) → 订单金额现在每张汇总表,一行一个分类,工时、数量、笔数、金额四个维度全齐了。
拿订单类型维度看:
订单类型 | 工时 | 订单数量 | 订单笔数 | 订单金额 |
常规订单 | 620.88 小时 | 34,059 | 127 | 541.5 万 |
样板订单 | 0.16 小时 | 9 | 3 | 0.14 万 |
试产订单 | 21.83 小时 | 1,110 | 20 | 17.6 万 |
这一眼看出去,产能、量、单量、钱都有了。后面排程引擎排什么、排多少,直接拿这些数去对。
七、踩坑小记:两个容易翻车的点
这几步看着顺,其实中间翻了两个车,值得记下来。
坑一:含空格的表名,跨表公式要加单引号
第一次建 SUMIFS,公式直接写:
=SUMIFS(销售订单 - 子表![订单用时],...)报错,errno=10000,不告诉你为啥。
排查半天发现,表名「销售订单 - 子表」带空格,跨表引用必须用单引号包起来:
=SUMIFS('销售订单 - 子表'![订单用时],...)没空格的表名(比如「产品资料」)不用加引号,但带空格的就一定得加。这个坑,接口不报具体原因,只能一个个公式试,很费时间。
坑二:字段在界面改了名,公式还引用旧名
建「订单数量」汇总时又报错。查下去发现,子表里原本叫「客户数量」的字段,被我在界面改成了「订单数量」。
我公式里还写着「客户数量」,字段都没了,自然报错。
📌
解决办法很简单:动手前先看一遍当前字段名,别凭记忆写。字段一旦在界面改过名,旧名字在公式里就是无效的。
排错这种事,最值钱的不是"能改对",而是"下次不用再踩"。两个坑记下来,后面 APS 越搭越顺。
最后说一句
📌
这是 APS 系列的第三篇。今天把产能负荷计算的底数打好了:
订单用时 = 数量 ÷ UPH,标准工时单一数据源
订单工时汇总、类型工时汇总、容量工时汇总三张表
工时、数量、笔数、金额四维汇总
产能负荷(RCCP)这一步,说白了就是先把"每个订单花多少工时"算清楚,再按你看得懂的维度(订单类型、产品类型、容量)加总。
算清楚工时,你才知道自己有没有能力接下这批活,才知道哪条产线要爆了。这是排程前必做的一步,也是最容易被跳过的一步。
数据表越多越要靠这套"汇总表 + SUMIFS"的套路,几笔就能把几百行订单压成一张老板看得懂的报表。
下一篇文章,继续往排程引擎走。三张汇总表在手,负荷对产能,就好比了。
术语解释
RCCP(粗能力计划):正式排程前先粗算一遍负荷。把订单要用的工时加起来,和可用产能对比,先判断"大致能不能做",不用精确到每台机器。
UPH:Units Per Hour,每小时产量。装配UPH=58,就是这条产线1小时能装58台。
SUMIFS:条件求和函数。满足某个条件的行,把指定列加起来。比如"订单类型=常规订单的所有订单用时之和"。
COUNTIFS:条件计数函数。数一数满足某个条件的行有多少。比如"订单类型=常规订单有127行"。
XLOOKUP:查找函数。给一个值,在一列里找到相同的,返回另一列对应的值。
单一数据源:同一个数据只在一个地方维护。UPH只存在产品资料表,其他表都去引用它,改一处全系统跟着变,不会出现两本账。
存货代码:每个产品的唯一编号,如 3.01.300.001。分段编码,一眼能看出成品位、类型、容量。
古老师(古哥计划)|中小制造数字化专家|**金山 KVP(金山办公最有价值专家)**|金山多维表格应用场景专家|金山 WPS 社区优秀创作者
深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。
本文由 AI 辅助创作
工具:灵犀专业版
模型:DeepSeek V4 Flash
灵点消耗:35,其中APS多维表格消耗15,文章消耗20

夜雨聆风