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

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应用