已收录

挑战用WPS灵犀开发APS排程系统(十七):交叉表转一维表,工序汇总实时自动算

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

Lv.4 核心创作者

大家好,我是古老师。

上一篇文章我们做了一张工序工时交叉表——11 个完工日期 × 9 道工序,每天每道工序干多少小时,一眼能看出瓶颈。有读者后台问我:交叉表不是已经能看工时了,为什么还要再做一张一维表?

今天这篇就把这个问题讲透。交叉表是给人看的,一维表是给公式和排程用的。 二维转一维,全用公式,数据一变自动重算,不写一行脚本。

一、交叉表为什么不能直接排程

先复盘一下交叉表长什么样:

  • 行 = 完工日期(11 个)

  • 列 = 工序名称(9 道,每道工序一列)

  • 值 = 用时(小时)

好看,但排程用起来有三个麻烦:

第一,脚本算的,不实时。 交叉表靠脚本读一遍 377 行源表累加出来的,源表一改,交叉表不会跟着变,得重跑脚本。

第二,列是死的。 9 道工序占了 9 列,哪天加一道工序,就得再加一列,表结构跟着动。

第三,二维表不好被公式引用。 排程要按"某天某道工序"去查工时,二维表查起来要么横着查要么竖着查,公式写得又长又绕。

排程真正要的是一张一维流水账:一行 = 一道工序某天,主键就是两个字段——工序名称 + 完工日期。这就有了一维表。

二、公式版一维表:三步走

目标明确:把"完工日期 × 工序名称"变成一维表的主键,再去重、汇总,全部用公式实时联动。

第一步:辅助组合键(先用 & 拼接)

UNIQUE 去重只能对一列做,主键是两个字段,就得先把两个字段拼成一个键。在源表加一个辅助公式字段「组合键」:

=[@工序名称]&"|"&TEXT([@完工日期],"yyyy/MM/dd")

结果是"开料|2026/09/02"这种带分隔符的串,中间竖线就是为了后面好拆开。

第二步:UNIQUE 去重,生成唯一主键

新表建一个序号字段(1 到 N),再用删除重复项公式把组合键去重:

=IFERROR(INDEX(UNIQUE(内胆工艺分解明细表![组合键]),[@序号]),"")

一行一个序号,取第 N 个唯一组合键,取完了自动返回空。源表 377 行,去重出来正好 87 个组合——9 道工序 × 11 个日期,实际出现的组合。

第三步:拆回两个字段 + 汇总工时

组合键只是过渡,真正的主键字段要拆出来:

工序名称 =IF([@组合键]="","",MID([@组合键],1,FIND("|",[@组合键])-1))
完工日期 =IF([@组合键]="","",MID([@组合键],FIND("|",[@组合键])+1,50))

再按组合键汇总用时:

用时(小时)=IF([@组合键]="","",SUMIFS(内胆工艺分解明细表![用时(小时)],内胆工艺分解明细表![组合键],[@组合键]))

到这里一维表就活了:87 行,每行是一道工序某天,总工时 596.13 小时,和源表一分不差。 源表一改,这 87 行自动重算,不碰脚本。

三、内胆排程配置表:参考注塑,但口径不同

有了实时的一维表,接下来做内胆排程配置表——直接参考注塑排程配置表的骨架:

字段

口径

开始排程日期

手工录

排程天数

手工录(内胆还没建RCCP评估表,先手工)

实际线体数

手工录 5(1#~5#)

装配排程天数

MAXIFS 引用装配配置表

内胆产能评估

装配天数-1 与排程天数比较

结束排程日期

开始+排程天数

需求总工时

SUM 一维表用时 = 596.13

可用工时

工作日历求和 × 线体数

工时缺口

可用 - 需求

内胆RCCP评估

缺口<0 则产能不足

线体负载率

需求 / 可用

工序总数

工艺表去重 = 9

这里我做了两处和注塑不一样的处理,是踩了坑之后定的:

可用工时没照搬注塑的"22 小时 × 机台数"。 注塑是设备连续作业,固定 22 小时;内胆是流水线,跟着工作日历走——周三周六 8 小时、其他工作日 10 小时、周日 0。所以可用工时是区间内工作日历工时求和 × 线体数,这样节假日、加班全都自动带进来。

排程天数先手工。 注塑是引用设备 RCCP 评估表推出来的,内胆这张评估表还没建,先手工录,后面要接公式再补。

填一组真实数据验一下:开始 2026/09/01、排程 15 天、5 条线 → 结束 9/16,可用工时 650,需求 596.13,缺口 53.87,产能满足,负载率 91.7%。

四、一次 BUG:设备没提前对应

做配置表的时候我发现一个问题——工序和设备根本没对上。

设备明细表里写着"拉伸液压机(一拉)""切边机""退火炉",工序表里有"一拉""切边""退火",但两张表之间没有桥。排程要用到"这道工序哪台设备干",这层对应必须补。

先在设备明细表加一个「对应工序」字段,用关键字匹配把设备名里的工序抠出来:

=IF(ISNUMBER(FIND("开料",[@设备名称])),"开料",
  IF(ISNUMBER(FIND("一拉",[@设备名称])),"一拉",
   ...9 层 IF 嵌套...))

注塑机(海天、伊之密那批)设备名里没有工序,自动返回空。23 台设备全验过:内胆 11 台全部命中,注塑 12 台留空。

然后反向,在两张内胆表加「设备」字段,用 XLOOKUP 按工序找设备:

=IFNA(XLOOKUP([@工序名称],设备明细表![对应工序],设备明细表![设备编号]),"D-06")

这里有个巧的地方:三拉/四拉共用一台设备 D-06,XLOOKUP 正查四拉一定查不到,就用 IFNA 兜底回 D-06。结果 9 道工序全部有设备,开料→D-01、一拉→D-02、二拉→D-04、三拉→D-06、四拉→D-06、切边→D-08、卷边→D-10、退火→D-07、清洁→D-11。

五、线体数还是设备数?

设备对上了,我在配置表里又加了一个字段「实际设备数」:

=COUNTA(UNIQUE(工序汇总一维表![设备]))

算出 8 台。结果古老师盯着表问我:这表和"实际线体数"是不是重复了?

不重复,两个是两码事。

  • 实际线体数 = 5,是可用工时的乘数,决定车间一天产能多少小时;

  • 实际设备数 = 8,是资源配置参考,产能不足时看是加线还是加设备。

一条流水线要串过 8 台设备,但产能按 5 条线算。用设备数去算产能会把产能虚高,所以线体数必须留着。

最后说一句

从订单到工序到产能,这条链现在是通的:

销售订单 → 内胆需求(55 组)→ 工序任务(377 行)→ 一维表(87 组合,实时)→ 排程配置表(产能评估)→ 设备(自动对应)

和上一版最大的区别是:交叉表靠脚本,一维表靠公式。 源数据一变,一维表、配置表、设备数全部自动跟着走,不用再点"运行脚本"。

这一步走完,内胆车间的产能评估真正有了"实时"两个字。下一篇,就可以拿着这套配置往排程上推了。


术语解释

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

一维表 / 二维表:一维表是一行一个业务(一行一道工序某天);二维表是行列交叉(行是日期、列是工序)。排程公式好用一维,看板好看用二维。

UNIQUE:去重函数,把一列里重复的值只留一份。跟"数据→删除重复项"一个意思,只不过它是公式,源数据一变自动更新。

XLOOKUP:跨表查找函数,给一个值去另一张表里找它对应的信息。好比用工序名去设备表里找这台设备编号。

SUMIFS:按条件求和的函数,可以一个或多个条件。本篇按组合键把一个工序某天的用时加总。

RCCP(Rough Cut Capacity Planning,粗能力评估):粗算产能够不够——把需求总工时和可用工时一比,得出"产能不足/产能满足"。不细算,先看大方向。

工作日历:一张把每天该上多少小时的表,含节假日、加班规则。本篇可用工时就是按它求和的,节假日自动扣掉。

IFNA:容错函数,公式算不出结果时给个兜底值。本篇四拉查不到设备,就兜底返回 D-06。

公式字段:多维表里不用手填、自动计算的列,数据一变结果跟着变。本篇一维表、配置表全是公式字段拼起来的。

本文由 AI 辅助创作

工具:灵犀专业版

模型:DeepSeek V4 Flash

灵点消耗:118

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

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

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

浏览 211
收藏
5
分享
5 +1
+1
全部评论