开篇:一句话结论

Excel 管库存的问题不是「不好用」,而是它天生不是为多人并发、可追溯的账本设计的。五个翻车场景几乎每家元器件公司都经历过:两个人同时改一张表,后保存的把先保存的覆盖了;复制粘贴把公式覆盖成死数字,整列计算失效;库存表出现「最终版」「最终版2」「确认版」多个分叉;同一颗料因为写法不同躺在三个行里;出了差错查不出是谁什么时候改的。前四个是效率问题,第五个是要命的问题——账对不上又找不到原因,就只能靠猜。下面逐个还原。

一、先说清楚:Excel 不是敌人,是阶段

先给 Excel 一个公允的评价。10 人以内、料号几百个、日出货几单的现货商,Excel 完全够用,而且灵活,想加列就加列。很多公司上系统失败,不是因为 Excel 差,是因为把 Excel 用在了它扛不住的规模上。

判断要不要换的信号有三个:人数超过 8 人同时碰一张表、料号超过 2000 个、出现过至少一次账实对不上且查不出原因。只要命中两条,就该认真考虑换工具了。下面的场景不是吓唬人,是这三条命中之后的必然结果。

二、五个翻车场景

场景一:两个人同时改一张表,后保存的赢

上午 10 点,业务员小李在共享盘打开《库存总表.xlsx》,把某型号减了 500 片。同一时间,仓库小王也打开了这张表,把同一型号减了 300 片(另一张出货单)。

11 点,小李保存退出。11 点 05 分,小王保存退出。小王的表里没有小李那 500 片的扣减,保存之后,这 500 片凭空回到了库存里。

更麻烦的是,小王根本不知道自己覆盖了谁。Excel 的共享工作簿功能理论上能合并修订,但实践中冲突频繁、经常失效,多数公司最后是关掉它,回到「谁先打开谁先改」的原始状态——也就是靠喊:「我先改着,你们别动!」

根因:Excel 是文件级的锁,不是记录级的锁。它锁的是整个文件,不是某一行某一列。这就导致要么全锁(一个人改,其他人干等),要么不锁(互相覆盖)。真正需要的是行级并发——两个人改不同型号互不干扰,改同一型号时按单据先后排队扣减。

场景二:复制粘贴,把公式覆盖成死数字

库存表通常这么设计:A 列型号,B 列入库,C 列出库,D 列 = B - C,E 列 = D × 单价。

某天新来的仓管要调整格式,把 D 列复制了一遍,然后「选择性粘贴 - 数值」粘回去。E 列还在算,D 列已经死了。之后所有的入库出库都改了 B 和 C,D 列纹丝不动。

这类问题最阴险的地方在于:它不会报错。表格看起来一切正常,数字也合理,只是从那一天起,库存余额就再也不更新了。等到月底盘点发现对不上,往回查要翻几百行。

根因:公式和数值在 Excel 里长得一模一样,界面上没有任何区别。用户无法一眼分辨哪个单元格是活的、哪个是死的。而在系统里,余额是由流水推导出来的——不存在「库存余额」这个可以直接手改的字段,也就无从覆盖。

场景三:版本分叉,「最终版」不是最终版

共享盘里的文件列表长这样:

  • 库存总表.xlsx
  • 库存总表(新).xlsx
  • 库存总表_最终版.xlsx
  • 库存总表_最终版2.xlsx
  • 库存总表_确认版_陈总.xlsx
  • 库存总表_备份_20240315.xlsx

六个文件,六个数字。业务员报价时随手打开一个,仓库发货时打开另一个。谁错了?没人错,是工具错了。

版本分叉的本质是:Excel 没有「唯一事实来源」这个概念。每一个副本都是一个平行世界,而没有机制告诉用户哪个世界是真的。

根因:文件系统只能按文件名区分版本,无法维护数据的权威副本。多人协作场景下,唯一事实来源必须由数据库保证,不能靠人的记性和命名纪律。

场景四:同一颗料,表里躺着三行

MLCC 0402 100nF 10V X7R,在表里可能有这些写法:

  • 0402 100nF
  • 0402 0.1uF 10V
  • CL05B104KO5NNNC
  • 0402B104K100NT

四种写法,四个行,四套库存数量。销售查 0402 100nF 显示没货,实际上 CL05B104KO5NNNC 那行躺着 20 万颗。

这不是仓管的错,是Excel 没有强制的物料主数据。单元格里填什么完全自由,没人拦得住。而在元器件行业,同一个物料有原厂型号、品牌型号、通用描述、规格参数四种叫法是常态,一物多码几乎必然发生。

根因:物料编码需要主数据管理(唯一编码 + 别名映射 + 强制校验),Excel 的单元格不具备约束能力。

场景五:改完了,查不出谁改的

月底账实差了 8000 片。老板问:谁改的?什么时候改的?为什么改?

三个问题,一个都答不上来。Excel 的修订记录要么没开,要么开了也只有「某单元格从 A 变成 B」,没有业务上下文——不知道对应哪张单、哪个客户、哪个业务员。

最后的处理方式通常是:账面调平,差异计入损溢,明年继续。这也是为什么很多公司的库存准确率长期在 80% 上下徘徊——不是不想改,是每一次差异都没被归因,同样的错误会一直重复。

根因:可追溯性需要「单据驱动流水」的数据模型——每一笔库存变动都由一张单据产生,单据带制单人、审核人、时间戳、关联对象。Excel 的自由编辑模式无法提供这个结构。

三、落地到系统:从「一张表」到「一本账」

从 Excel 换到系统,本质上不是换个界面,是换三个底层机制。

机制一:流水驱动,而不是余额驱动。 Excel 里你直接改「库存数量」这个格子;系统里没有这个格子,库存余额由所有出入库流水累加得出。这意味着余额不可能被误改,也不可能和流水打架——因为它是算出来的。太帅ERP 的库存模块就是按出入库流水组织的,每一次变动都对应一张单据,余额实时汇总。

机制二:单据留痕,而不是自由编辑。 每一笔库存变动都必须走入库单、出库单、调拨单或损溢单,单据带制单人、审核时间、关联的客户或供应商。出了差异,从物料反查流水,从流水反查单据,从单据找到人。

机制三:物料主数据强制唯一。 系统里每个物料有唯一编码,别名(原厂型号、客户叫法、替代料)挂在编码下做映射。录入时系统按编码校验,写不出第二个重复行。

需要坦白说一句:上系统的头两个月,你会觉得比 Excel 慢。因为 Excel 里改个数字一秒搞定,系统里要开单、选物料、填数量、审核。这个摩擦是真实的,也是换来的东西的代价——换来的是账能对得上、差异能查得出、多人能同时干活。如果你每天的库存变动少于 20 笔,这个代价可能不划算;超过 50 笔,越早换越早解脱。

具体怎么判断该不该换、换什么样的,可以对照ERP与进销存的区别里那张能力边界表。换完之后,怎么把库存准确率真正做上去,见库存准确率的提升方法;盘点怎么排、差异怎么查,见循环盘点的作业安排。这套方法属于元器件库存管理实战手册系列。

四、常见误区

  • 错在把 Excel 表格设计得越来越复杂来解决问题 → 加数据验证、加宏、加保护工作表,复杂度上去了,维护的人一走就全废。正确的是承认 Excel 的能力边界,把「多人并发 + 可追溯」这两件事交给数据库。
  • 错在上系统时要求「界面和操作跟 Excel 一模一样」 → 一模一样意味着把 Excel 的缺陷一起搬过来。正确的是接受单据化操作带来的流程约束,那是准确率提升的来源,不是障碍。
  • 错在一次性停用 Excel,没有过渡期 → 仓库同时记两套最容易崩。正确的是并行 2 到 4 周,以系统为准、Excel 只做对照,跑顺了再彻底切。

FAQ

我们才 5 个人,Excel 用得好好的,需要换吗? 大概率不需要。5 人以内、料号一两千、日出货十几单,Excel 的灵活性反而是优势。触发更换的信号是:开始出现两个人改同一张表互相覆盖、或者账实对不上查不出原因。这两个信号没出现之前,不用急。

能不能继续用 Excel,只是加上共享和权限? 共享工作簿能缓解但解决不了核心问题。它能记录谁改了哪个单元格,但记录的是单元格变化,不是业务事件——你依然不知道这次修改对应哪张出货单、哪个客户。权限也防不住误操作,只能防恶意。

上系统后 Excel 还有用吗? 有用,但角色变了。Excel 从「账本」变成「分析和临时加工的工具」——系统导出数据到 Excel 做透视、做图表、做临时测算,这没问题。关键是数据只在系统里产生,Excel 不再产生数据。这条红线守住了,两套工具可以共存。

历史 Excel 数据怎么迁进去? 物料库、客户、供应商这三张主数据表要重点清洗——尤其是一物多码的部分,迁进去之前先合并重复。库存余额按最近一次盘点结果作为期初数导入,不要直接搬 Excel 里的账面数(大概率是错的)。迁移完成后以系统数据为准,旧表封存。

方法归方法,落地归落地

五个翻车场景,本质上都是同一个问题:Excel 是文件,库存是账本。把账本当文件管,规模一大必然失控。如果你现在正卡在「想换但怕折腾」,可以先看看从表格切到系统,日常操作到底长什么样。

主 CTA:看这套出入库在系统里怎么跑 次 CTA:继续读:元器件物料编码规范