全文约2100 字;
阅读时间:约6分钟;
听完时间:约12分钟;
根据前几天设计的几个基础数据表(出库、入库、调拨),现在可以设计“现存量明细”这张数据表了。在这张表中,“现存量”可以设计为合并显示(不分仓位),也可以设计为分仓位显示。无论选择哪种显示方式,只要设计出分仓位显示的功能,就能够同时展示汇总的数据。
现存量等于入库数量减去出库数量,其中入库和出库的数量还需要包括调拨的数量。因此,整体的计算公式可以表示为:
资材入库+调拨入库-资材出库-调拨出库=现存量。
编码去重现存量基于已入库数据的编码作为基准。由于入库编码中可能存在重复项,因此首要步骤是对这些编码进行去重处理。接下来,创建一个新的数据表,并将其命名为“原材料仓现存量报表”。在该表中添加一个文本字段,命名为“编号”,并在其中录入从1到5000的数字序列。这一数字范围的上限应根据入库编码去重后的统计数量来确定;如果需要处理的编码数量较大,可以相应地提高这个上限数值。此“编号”字段主要用于辅助计算,在完成相关公式的设置后,可以选择隐藏该字段。
新建一个公式字段,并将其命名为“物料编码”,录入如下公式:
IFERROR(INDEX(UNIQUE(资材入库![物料编码]),[@编号]),"")
公式解释:
多维表格的公式与传统表格公式的写法有所不同,因为在多维表格中不能像传统表格那样直接进行公式数组的自动展开。因此,直接使用UNIQUE 函数可能无法删除入库数据中的重复项目。为了实现这一目标,我们需要结合 INDEX 函数与辅助列序号。该公式的原理是从“资材入库”表中删除物料编码的重复项,然后使用 INDEX 函数按顺序返回第1项、第2项,直至预测的第5000项。如果索引超出了数组的有效范围,INDEX 函数会报错,这时我们使用 IFERROR 函数来屏蔽错误并返回空值。
引用汇总有了唯一的物料编码后,需要把基础资料数据表中编码对应的名称和单位引用过来。分别录入以下公式:
=XLOOKUP([@物料编码],基础资料![物料编码],基础资料![物料名称],"")
=XLOOKUP([@物料编码],基础资料![物料编码],基础资料![单位],"")
XLOOKUP([@物料编码],资材入库![物料编码],资材入库![库位名称],"")
效果如下图所示:
汇总数据在去除重复项后,我们需要汇总“资材出库”和“资材入库”的数量,然后通过“入库”数量减去“出库”数量来计算当前的库存量。这个计算可以用以下公式表示:
现存量=(资材入库+调拨入库)−(资材出库+调拨出库)
接下来,我们将分别创建四个统计字段,并给它们命名如下:
入库汇总
资材入库:
统计字段为“资材入库数据表”中的“入库数量”。
统计方法是求和。
统计条件是“资材入库数据表”中的“物料编码”必须与此表中的“物料编码”相匹配。
调拨入库:
统计字段同样取自“资材入库数据表”中的“入库数量”。
统计方法同样是求和。
统计条件除了上述的“物料编码”匹配外,还需增加一个条件:“资材入库数据表”中的“调入库位”必须与“原材料现存量表”中的“库位名称”相匹配。
效果如下图所示:
同样的原理,继续把出库汇总字段和调拨出库字段设计好,
具体步骤如下:
出库汇总:
统计字段为“资材出库数据表”中的“出库数量”。
统计方法是求和。
统计条件是“资材出库数据表”中的“物料编码”必须与此表中的“物料编码”相匹配。
调拨出库:
统计字段同样取自“资材出库数据表”中的“出库数量”。
统计方法同样是求和。
统计条件除了上述的“物料编码”匹配外,还需增加一个条件:“资材出库数据表”中的“调出库位”必须与“原材料现存量表”中的“库位名称”相匹配。
最后在新建一个新的公式字段,并命名为“结存数量”,公式录入:
=[@入库汇总]+[@调拨入库]-[@出库汇总]-[@调拨出库]
效果如下图所
其它库位到了上一步骤,基本的《仓库管理系统》模型就已经构建完成了。如果不涉及库位管理的话,那么到这里就可以结束了。如果需要更高颗粒度的仓库管理,可以继续根据调拨的库位建立相应的库位现存量明细表。
分开建立和合并建立库位现存量明细表各有其优势:
分开建立:这种方式便于单独管理每个库位,但可能不太方便进行总体汇总。
合并建立:这种方式便于进行总体汇总,但在管理单个库位时可能会不太方便。
这里以线边仓为安全,来说明如何建立分仓现存量明细。右键新建立一个新的数据表并命名为“生产线边仓现存量报表”
同样建立一个辅助编号,再用公式提取唯一值:
IFERROR(INDEX(UNIQUE(资材调拨![物料编码]),[@编号]),"")
效果如下图所示:
接下来按原材料现存量报表的思路继续把相关的字段建立起来,并分别录入以下公式:
物料名称:
=XLOOKUP([@物料编码],资材调拨![物料编码],资材调拨![物料名称],"")
单位:
=XLOOKUP([@物料编码],资材调拨![物料编码],资材调拨![单位],"")
库位:
=IF([@物料编码]="","","生产线边仓")
调入汇总:
统计字段:资材调拨表的数量
统计方式:求和
统计条件:资材入库表中的物料编码等于本表的物料编码;资材入库表中的调入库位等于本表的库位。
调出汇总:
统计字段:资材调拨表的数量
统计方式:求和
统计条件:资材出库表中的物料编码等于本表的物料编码;资材出库表中的调出库位等于本表的库位。
现存量:
=[@调入汇总]-[@调出汇总]
效果如下图所示:
基本效果接下来,可以通过筛选和其他一些小技巧来隐藏不必要的数据,从而使各个数据表的视图看起来更加整洁清爽。例如,可以将筛选项目设置为“物料编码”,筛选条件设置为“非空白”。完成筛选后,记得点击上方的“视图设置”中的“同步给所有人”,以确保所有人都能看到调整后的视图。
效果展示(部分)
系统查看如下:
【金山文档 | WPS云文档】 《仓库管理系统》
https://kdocs.cn/l/caHN4lKd8Kw7
未完待续……