1. 配方原料消耗台账清洗与标准化
台账的典型脏数据形态
配方原料消耗台账通常由车间或实验室人员手工登记,常见问题集中在三类:合并单元格(同一配方编号跨多行合并,导致逐行读取时只有首行有值)、单位混用(同一物料出现 kg、g、t、L 等不同单位)、空值缺失(消耗量留空、以“—”或“/”占位)。清洗的目标是得到一张“一行一条消耗记录、每列单一含义、数值带统一单位”的标准化明细表。
关键操作与公式
假设原始数据在 A1:D200,列为:A 配方编号、B 物料名称、C 消耗量(含单位文本)、D 登记日期。按以下顺序处理,每步都保留可核查的中间列。
- 取消合并并向下填充编号:选中 A 列 → 开始 → 合并后居中(取消)→ 按
Ctrl+G定位“空值” → 输入=A2(上一行)→ 按Ctrl+Enter批量填充。这样每个物料行都带上所属配方编号。 - 拆分数值与单位:在 E 列提取数值,F 列提取单位。若单位固定出现在末尾,可用
=VALUE(LEFT(C2,LEN(C2)-2))取数值(假设单位最多 2 字符),=TRIM(RIGHT(C2,2))取单位。更稳妥的做法是用“数据 → 分列 → 按分隔符(空格)”一次拆成两列。 - 单位换算:在 G 列写换算系数,用查找表而非嵌套 IF:
=IFERROR(VLOOKUP(F2,$K$2:$L$5,2,FALSE),1),其中 K:L 为系数表(g→0.001、kg→1、t→1000、L→密度值)。H 列消耗量(kg) ==E2*G2。 - 空值与占位符处理:I 列标记
=IF(OR(C2="",C2="—",C2="/"),"缺失","正常"),H 列对缺失行填 0,避免后续求和报错。
L(升)换算为 kg 必须乘以该物料的密度,不同物料密度不同,不能统一用一个系数。若台账未记录密度,应将该行标记为“待补密度”,不要强行换算。
结果验证
| 校验项 | 检查方法 | 通过标准 |
|---|---|---|
| 行数一致 | =COUNTA(B2:B200) 对比清洗后行数 | 相等,无丢行 |
| 编号完整 | =COUNTBLANK(A2:A200) | 结果为 0 |
| 数值合法 | =COUNTIF(H2:H200,"<0") | 结果为 0 |
| 单位唯一 | 对单位列做数据透视计数 | 仅出现 kg |
| 缺失可追溯 | =COUNTIF(I2:I200,"缺失") | 等于原始空值/占位符数量 |
全部通过后,将 A、B、H、I 四列复制为值,另存为“标准化明细表”,即可作为后续批次合并、含量归一化等统计的输入底表。