这个问题是关于我在 Google 表格中制作的库存跟踪系统的。
需要明确的是:
- 任何传入物品都有正数量
- 任何传出物品的数量为负数
要求是,在盘点期末库存时,输入现有数量,即正数。这个正数就是当前可用的库存。
相反,如果期末库存为负数,则表示它是消耗量(负数)。在这里,它将从之前的总库存中减去。因此,挑战在于计算这一点:
产品 X 的库存 = [其总数量与期末库存之间的差额] - [之前的库存]
我使用 SUMIFS 来获取每件商品的库存。这不考虑日期,因为我们需要计算当前库存,而不管日期是多少。
问题: 这只在我添加新进库存之前有效,之后整个计算都会出错。例如,如果我在第 3 天添加 10,000,库存就会变成 -4300,而它应该是 15,700。查看图片以更好地理解。
前: 第三天没有添加新库存--> sumifs 看起来不错。
后: 第三天增加了 10,000 个数量 --> 破坏了 sumifs。
如果您需要任何其他信息来理解,请告诉我。
非常感谢您的帮助。我已经在这上面花费了太多时间。谢谢。
PS - 我希望我发帖在正确的堆栈上。我也应该在 webapps 上发帖吗?
答案1
Jeet,欢迎。以下是 Excel 中库存管理(和银行账户余额!)以及调试此问题的一些原则。
将您的交易与您的流动余额分开。
使用单独的列不仅是为了便于阅读,还有助于保持公式无错误。在示例中,您似乎使用 SUMIFS 来查找文本提示(“开盘”、“收盘”、“进行”),但这使得无法验证打印输出或屏幕转储。使用单独的列,就像分类帐一样。
绝不允许库存出现负数。
如果您的库存是实物,您的库存栏永远不应低于零。相反,应防止交易栏允许减去比库存中可用的项目更多的项目 - 并要求在提取之前添加更多库存。
有几种方法可以做到这一点,但其中一种方法是为“延期交货”、“需求过剩”或“未满足”库存请求创建一个额外的列,这些请求在进行额外交易之前得到处理。
即使您的“库存”包含公司外部可轻易获得的物品,您也应该这样做,无论这些物品有多容易获得。(隔壁一家 24 小时营业的杂货店甚至有 AA 电池)。
由于您正在对物理过程进行建模,因此您不应让电子表格对不可能发生的事情进行建模。对需要发生的事情进行建模(在上面的例子中,在隔壁购买电池,然后将其发送给客户)。
为了进行调试,请根据有效的片段公式构建“大公式”。
第一次尝试时,人们很容易就想创建大型公式。这会让它们很难调试。更好的方法是创建一些可以运行的小公式(一次一个子句)——测试不同的情况,例如正交易、负交易、零余额交易等——一旦所有事情都运行正常,就将它们合并为大型公式。
您的问题没有提供您使用的实际公式,因此目前无法更具体地进行调试。最后,没有特定于电子表格的堆栈,所以您说得对,不清楚这是超级用户问题还是 Web 应用程序问题。应该有一个电子表格堆栈。