夜雨聆风学习资料网

ARTICLE · 1299185

EXCEL进销存有什么优势

EXCEL进销存有什么优势

用 Excel 做进销存:为什么录单不该直接写进表格?

很多团队用 Excel 录单,都是打开表格找到最后一行,一格一格往里填。填错一列没人提醒,点错一格还可能把公式盖掉,表格越用越不敢动。

用 Excel 做进销存,第一步是把骨架搭对:库存从单据算出来,单据确认后才算数。这一点,公式就能做到。

但表格有一个绕不开的问题:想录一张采购单,要先在主表写一行,再切到明细表写几行,单号和明细 ID 还得自己编。逻辑是对的,操作却不顺手。

所以这一期做一件事:把录入从表格里挪出来,放进弹出窗体。 业务过程不变,还是 基础资料 → 采购入库 → 销售出库 → 库存查询 → 经营统计,变的是数据进入系统的方式。

这是「从 Excel 到 ERP」系列的第一期。核心只有一句话:

保存不等于生效,写入也不该是谁都能碰表格;数据要走一道门,门口做校验。

图 1:首页 —— 模块导航里新增了「+采购单」「+销售单」,趋势和低库存提示仍由单据算出

一、弹窗不是为了好看

做窗体很容易被当成美化界面,其实它解决的是三个业务问题:

数据对象
作用
录入窗体
采购单、销售单共用一个窗体,一次录完主表和明细
资料窗体
分类、商品、客户、供应商共用一个窗体,字段按资料类型变化
业务模块
负责编号、校验、写表、确认和取消
工作表
只负责保存和展示,全部保护起来

第一,录入的人不用知道数据存在哪几张表。第二,单号由系统生成,不靠人记。第三,所有写入都经过同一段代码,规则只需要写一次。

表结构、公式、状态规则和示例数据都不动,窗体只是在外面加了一层入口。

图 2:窗体设计 —— 在 VBA 编辑器里搭采购单窗体,采购和销售共用同一个界面

二、一张采购单,现在怎么录

点「+采购单」后弹出窗体,日期默认今天。选供应商,选商品,系统带出参考采购价和当前库存,填好数量后加入明细,可以连续添加。

单号规则:PO / SO + 单据日期 + 3 位序号 例如:PO20261102002

录完有两个选择:

保存草稿:写入表格,不计入库存 保存并确认:写入表格,并计入库存和统计

这里还是系列的主线:草稿保存不算数,确认才生效。 窗体没有改变这条规则,只是让它更难被绕过。

图 3:采购单窗体 —— 三行明细合计 4,632.50,确认后状态变绿,单据不能再修改

写入时还有一个容易忽略的细节:主表和明细要么都写进去,要么都不写。保存中途出错,会撤回本次写入,不留下半张单据。

三、确认这一步,才是真正的门

只靠 Excel 公式防不住超卖,只能事后预警。现在确认动作由代码执行,校验就能放在生效之前。

确认销售单时: 本单每个商品的合计数量 ≤ 当前库存 → 确认成功 否则 → 保持草稿,并列出缺口

注意是合计数量。同一个商品分两行录,每行看着都够,加起来可能超了,所以要先汇总再比较。

比如给矿泉水录 99999 瓶,当前库存只有 250,系统不会确认,并提示缺多少。单据仍是草稿,改完数量可以再确认。

图 4:超卖拦截 —— 数量 99999 超过库存 250,单据保持草稿,系统提示缺口

取消也有同样的问题。一张已确认的采购单,货如果已经卖出去了,取消它会让库存变成负数。所以这种情况系统直接拒绝,而不是先取消、再报警。

四、基础资料为什么也要走窗体

商品、客户、供应商看起来只是清单,但所有单据都引用它们。如果能在表格里随手改,出问题的就不是一行资料,而是所有用到它的单据。

所以资料也走窗体,ID 自动生成,必填项在保存时检查。还有两条规则值得一提:

期初库存:只在建档时填写,之后不可修改 不再使用的资料:改为停用,不删除

期初库存一改,历史库存就全变了;资料一删,旧单据就找不到对应的商品。停用后,新单的下拉列表里不再出现,历史单据依然完整。

图 5:商品资料窗体 —— ID 自动生成,带 * 的是必填项,同一个窗体也用于客户和供应商

五、把表格保护起来

门做好了,还要把别的路封上。这一版的全部工作表都受保护,录入只能走窗体,筛选和调整列宽仍可使用,排序不可用。

原来的录入格是开放的,这里要把它们全部锁定,否则窗体只是多了一个选择,而不是唯一入口。

这里要说清楚,这种保护没有设密码,只是防误改,不是防篡改。点一下「撤销工作表保护」,就能绕过全部规则。

六、Excel 到这里的边界

加了 VBA 之后,纯公式版的几个问题解决了一部分:

  • 超卖:
     确认前能校验,问题解决了。
  • 误改:
     日常操作被挡住了,但有心绕过仍然拦不住。
  • 中途出错:
     能撤回写入,但这是代码做的,不是存储层的事务保证。
  • 多人使用:
     仍然不行。多人共用一个文件,库存校验和单号都可能冲突。
  • 留痕和权限:
     没有操作日志,也分不了角色。

另外,禁用宏时公式还能显示,但不能录入;未在 Mac 版 Excel 上验证,预计不可用。

规则现在写在 VBA 里,也就是写在门上。只要有人从门外进来,规则就管不到。真正稳的做法,是把规则写进存放数据的地方。这正是下一期换 Access 的原因。

图 6:业务模块 —— 编号、校验和写表都集中在 VBA 模块里,窗体本身只负责收集输入

数据库设计的关键点

这一期虽然还在 Excel 里,下面三条到了数据库一样成立:

  1. 过程单据与台账分开。
     窗体只提交单据,库存继续由公式从单据算出来。
  2. 保存与生效分开。
     草稿不计入库存,确认这一步集中做校验。
  3. 派生数据可重算。
     窗体不写库存数字,所以窗体出错也不会留下第二份账。

如果自己做,可以按这个顺序

  1. 先把表结构和公式做对,窗体救不了错误的结构;
  2. 写业务模块:编号、保存、确认、取消,先不做界面;
  3. 用代码测通各种情况,再做窗体;
  4. 让采购和销售共用一个窗体,用参数区分;
  5. 给单据写入加失败回退,不留半张单;
  6. 在确认和取消前加校验;
  7. 最后保护全部工作表,并测试录错、超卖、取消这些场景。

结语

表格适合看数据,不适合当录入界面。

把录入收进窗体,看起来只是换了个操作方式,实际是给数据加了一道门:单号在这里生成,规则在这里检查,生效在这里发生。

保存不等于生效,写入也要有入口。 下一期,我们把这道门从 VBA 搬进数据库,看看规则写在数据旁边,能多做到些什么。

我是做 Access 数据库的 Leo。

如果你需要系统学习 Access 数据库,或者想定制 Access 数据库系统,可以联系我:

微信:flyrio1986

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料