前两天一个客户准备上系统跟我说数据我都整理好了你导吧然后甩过来 7 个 Excel 文件。我一个个点开看到第三个的时候沉默了。给大家看看里面是什么样的合并单元格做的大表头数字存成了文本带小绿三角那种一个格子里塞着黑色/大号/12个三个信息红色字体表示缺货、绿色表示正常表里每 20 行插一行小计日期有2026/10/1、10.1、十月一日、20261001四种写法某个单元格的批注里写着这个数不准问老李。这不是他不用心。这是 Excel 用了五年之后的正常样子。很多人以为上系统就是把表导进去。我做了这么多单实话实说真正花时间的不是写代码是把这些表收拾干净。3271 行数据我清洗了三个晚上比写导入功能本身的时间还长。这篇就摊开讲讲我拿到一堆烂表之后到底是怎么一步步把它变准的——不只是技巧更多是顺序和取舍。一、第一步不是动手是先问三句话我拿到表的第一件事一个字都不改先问客户这几张表哪一张你现在天天在用这个数据是谁在维护多久更新一次为什么要先问因为 7 张表里通常只有 1 张是活的剩下 6 张是某个时间点的快照。这个客户就是这样——7 张表里有 4 张是去年的他自己以为都还在用。基准表找错了后面全白干。这一步省下的不是时间是返工。二、所有操作都在副本上做原件一个字不动我把 7 个文件各复制一份文件名统一加后缀比如库存表-副本-20261013-清洗中.xlsx原件锁起来不动。这么啰嗦是有原因的清洗这活改着改着一定会发现刚才那步改错了。没有原件你连原来是多少都查不回来。一句话讲清楚清洗不是编辑是考古。你得随时能回到挖之前的状态。三、先修结构再修内容这个顺序不能反。结构不对内容改得再对也导不进去。结构问题先修取消所有合并单元格拆出来的空格逐个填满表头只保留第一行大标题、说明行全删掉删掉所有小计合计行这些是给人看的不是数据一个格子只留一个信息黑色/大号/12个拆成三列。内容问题后修文本型数字转成真数字日期统一成一种格式单位单独开一列别写进数量里用颜色表示的信息必须变成一列文字比如加一列状态填缺货/正常。最后这条最容易被忽略。颜色、批注、加粗这些人看着一目了然但系统一个都读不懂——程序眼里等于没有。你不把它变成实实在在的一列文字这个信息在导入的那一刻就永久丢失了。四、拿第二份来源去对别自己闷头改清洗完我觉得挺干净了然后做了一件事拿仓库的手工账跟这张表逐条对了一遍。对出来48 条对不上——有的表里有货架上没有早卖掉了没销账有的货架上有表里没有新进的没登记有的数量差一两个。这 48 条我一条都没自己改。我列了个清单发回给客户“这 48 条您确认一下。”原因很简单我不是他们公司的人我没有判断权。我凭经验猜出来的数长得跟真的一样以后谁都发现不了它是猜的。五、最重要的一条允许确认不了客户回了 40 条剩下 8 条他也不知道。我一开始挺着急想着要不要按经验估一个填上。后来我没估——我给这 8 条打了个标记导进系统时单独归到待确认分组里然后跟客户说“这 8 条您找个时间实盘一下数完在系统里改一下就行。”现在回头看这是我那三个晚上做过最对的决定。清洗到最后一定会剩下一堆确认不了的东西。这不是失败这是正常。你要是为了全部对上硬填一个数那才是真的脏数据——因为它看起来跟真的没区别。最后的结果三个晚上3271 行最终导进系统3203 条正常导入60 条修正后导入8 条标记待确认客户看完说了一句原来我这些数据这么乱啊。我说不是你的问题Excel 用到第五年谁都这样。顺带说一句也是因为吃过这个亏我在做 minierp 的时候把导入功能特意设计成先导 20 条 → 人工核对 → 再导剩下的就是被这 7 张表吓出来的。批量操作对了是批量的错了也是批量的。写在最后我在做一套自研 ERP叫 minierp目前还在开发阶段开发日常会持续更在这里。如果你手头也有一堆年头很久的 Excel正打算搬进系统又不知道从哪下手可以在评论区说说你的表大概什么情况——我回不了所有人但每条都会看。关注我看我怎么把 minierp 这套 ERP 一点点做出来。