1. 配方原料消耗台账清洗与标准化

台账的典型脏数据形态

配方原料消耗台账通常由车间或实验室人员手工登记,常见问题集中在三类:合并单元格(同一配方编号跨多行合并,导致逐行读取时只有首行有值)、单位混用(同一物料出现 kg、g、t、L 等不同单位)、空值缺失(消耗量留空、以“—”或“/”占位)。清洗的目标是得到一张“一行一条消耗记录、每列单一含义、数值带统一单位”的标准化明细表。

原始台账(脏) 配方编号 | 物料 | 消耗量 P-101 | 树脂A | 12 kg (合并)| 填料B | 800 g (合并)| 助剂C | — P-102 | 树脂A | 0.02 t 合并 / 单位混用 / 空值 清洗与标准化 ① 取消合并 + 向下填充编号 ② 拆分数值与单位(分列/正则) ③ 单位换算为 kg(×系数) ④ 空值/占位符 → 0 并标记 标准化明细表 配方编号 | 物料 | 消耗量(kg) | 标记 P-101 | 树脂A | 12.000 | 正常 P-101 | 填料B | 0.800 | 正常 P-101 | 助剂C | 0.000 | 缺失 P-102 | 树脂A | 20.000 | 正常 统一基准:kg | 换算系数 g → kg × 0.001 kg → kg × 1 t → kg × 1000 L → kg × 密度 — / 空 → 0 标记 清洗后校验(通过条件) · 记录行数 = 原始非空物料行数 · 配方编号无空值 · 消耗量全部为数值且 ≥ 0 · 单位列唯一为 kg · 缺失标记行数与原始空值数一致

关键操作与公式

假设原始数据在 A1:D200,列为:A 配方编号、B 物料名称、C 消耗量(含单位文本)、D 登记日期。按以下顺序处理,每步都保留可核查的中间列。

  1. 取消合并并向下填充编号:选中 A 列 → 开始 → 合并后居中(取消)→ 按 Ctrl+G 定位“空值” → 输入 =A2(上一行)→ 按 Ctrl+Enter 批量填充。这样每个物料行都带上所属配方编号。
  2. 拆分数值与单位:在 E 列提取数值,F 列提取单位。若单位固定出现在末尾,可用 =VALUE(LEFT(C2,LEN(C2)-2)) 取数值(假设单位最多 2 字符), =TRIM(RIGHT(C2,2)) 取单位。更稳妥的做法是用“数据 → 分列 → 按分隔符(空格)”一次拆成两列。
  3. 单位换算:在 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。
  4. 空值与占位符处理: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 四列复制为值,另存为“标准化明细表”,即可作为后续批次合并、含量归一化等统计的输入底表。