ARTICLE · 1299185
EXCEL进销存有什么优势
用 Excel 做进销存:为什么录单不该直接写进表格?
很多团队用 Excel 录单,都是打开表格找到最后一行,一格一格往里填。填错一列没人提醒,点错一格还可能把公式盖掉,表格越用越不敢动。
用 Excel 做进销存,第一步是把骨架搭对:库存从单据算出来,单据确认后才算数。这一点,公式就能做到。
但表格有一个绕不开的问题:想录一张采购单,要先在主表写一行,再切到明细表写几行,单号和明细 ID 还得自己编。逻辑是对的,操作却不顺手。
所以这一期做一件事:把录入从表格里挪出来,放进弹出窗体。 业务过程不变,还是 基础资料 → 采购入库 → 销售出库 → 库存查询 → 经营统计,变的是数据进入系统的方式。
这是「从 Excel 到 ERP」系列的第一期。核心只有一句话:
保存不等于生效,写入也不该是谁都能碰表格;数据要走一道门,门口做校验。

一、弹窗不是为了好看
做窗体很容易被当成美化界面,其实它解决的是三个业务问题:
第一,录入的人不用知道数据存在哪几张表。第二,单号由系统生成,不靠人记。第三,所有写入都经过同一段代码,规则只需要写一次。
表结构、公式、状态规则和示例数据都不动,窗体只是在外面加了一层入口。

二、一张采购单,现在怎么录
点「+采购单」后弹出窗体,日期默认今天。选供应商,选商品,系统带出参考采购价和当前库存,填好数量后加入明细,可以连续添加。
单号规则:PO / SO + 单据日期 + 3 位序号 例如:PO20261102002录完有两个选择:
保存草稿:写入表格,不计入库存 保存并确认:写入表格,并计入库存和统计这里还是系列的主线:草稿保存不算数,确认才生效。 窗体没有改变这条规则,只是让它更难被绕过。

写入时还有一个容易忽略的细节:主表和明细要么都写进去,要么都不写。保存中途出错,会撤回本次写入,不留下半张单据。
三、确认这一步,才是真正的门
只靠 Excel 公式防不住超卖,只能事后预警。现在确认动作由代码执行,校验就能放在生效之前。
确认销售单时: 本单每个商品的合计数量 ≤ 当前库存 → 确认成功 否则 → 保持草稿,并列出缺口注意是合计数量。同一个商品分两行录,每行看着都够,加起来可能超了,所以要先汇总再比较。
比如给矿泉水录 99999 瓶,当前库存只有 250,系统不会确认,并提示缺多少。单据仍是草稿,改完数量可以再确认。

取消也有同样的问题。一张已确认的采购单,货如果已经卖出去了,取消它会让库存变成负数。所以这种情况系统直接拒绝,而不是先取消、再报警。
四、基础资料为什么也要走窗体
商品、客户、供应商看起来只是清单,但所有单据都引用它们。如果能在表格里随手改,出问题的就不是一行资料,而是所有用到它的单据。
所以资料也走窗体,ID 自动生成,必填项在保存时检查。还有两条规则值得一提:
期初库存:只在建档时填写,之后不可修改 不再使用的资料:改为停用,不删除期初库存一改,历史库存就全变了;资料一删,旧单据就找不到对应的商品。停用后,新单的下拉列表里不再出现,历史单据依然完整。

五、把表格保护起来
门做好了,还要把别的路封上。这一版的全部工作表都受保护,录入只能走窗体,筛选和调整列宽仍可使用,排序不可用。
原来的录入格是开放的,这里要把它们全部锁定,否则窗体只是多了一个选择,而不是唯一入口。
这里要说清楚,这种保护没有设密码,只是防误改,不是防篡改。点一下「撤销工作表保护」,就能绕过全部规则。
六、Excel 到这里的边界
加了 VBA 之后,纯公式版的几个问题解决了一部分:
- 超卖:
确认前能校验,问题解决了。 - 误改:
日常操作被挡住了,但有心绕过仍然拦不住。 - 中途出错:
能撤回写入,但这是代码做的,不是存储层的事务保证。 - 多人使用:
仍然不行。多人共用一个文件,库存校验和单号都可能冲突。 - 留痕和权限:
没有操作日志,也分不了角色。
另外,禁用宏时公式还能显示,但不能录入;未在 Mac 版 Excel 上验证,预计不可用。
规则现在写在 VBA 里,也就是写在门上。只要有人从门外进来,规则就管不到。真正稳的做法,是把规则写进存放数据的地方。这正是下一期换 Access 的原因。

数据库设计的关键点
这一期虽然还在 Excel 里,下面三条到了数据库一样成立:
- 过程单据与台账分开。
窗体只提交单据,库存继续由公式从单据算出来。 - 保存与生效分开。
草稿不计入库存,确认这一步集中做校验。 - 派生数据可重算。
窗体不写库存数字,所以窗体出错也不会留下第二份账。
如果自己做,可以按这个顺序
先把表结构和公式做对,窗体救不了错误的结构; 写业务模块:编号、保存、确认、取消,先不做界面; 用代码测通各种情况,再做窗体; 让采购和销售共用一个窗体,用参数区分; 给单据写入加失败回退,不留半张单; 在确认和取消前加校验; 最后保护全部工作表,并测试录错、超卖、取消这些场景。
结语
表格适合看数据,不适合当录入界面。
把录入收进窗体,看起来只是换了个操作方式,实际是给数据加了一道门:单号在这里生成,规则在这里检查,生效在这里发生。
保存不等于生效,写入也要有入口。 下一期,我们把这道门从 VBA 搬进数据库,看看规则写在数据旁边,能多做到些什么。
我是做 Access 数据库的 Leo。
如果你需要系统学习 Access 数据库,或者想定制 Access 数据库系统,可以联系我:
微信:flyrio1986















































































