首页 > 解决方案 > 多场景计费差异分析 - VBA

问题描述

我收到了向客户收取的数万张账单。我正在尝试确定这些账单是否可能准确。我拥有的唯一数据是实际账单本身。这就是事情变得复杂的地方。有四种情况,每种情况都有自己的细微差别:

场景 1 细微差别:

  1. 基本费用为 10 美元 * 购买的物品数量 * 交付数量(购买的物品数量上限为 10,交付数量上限为 7)
  2. 如果购买的商品数量超过 1,则总账单折扣 20%
  3. 如果箱子被回收,总账单再优惠15%
  4. 如果商品超过 15 磅,每件超过 15 磅的商品将收取 10 美元的额外费用(最多 10 件商品)
  5. 如果没有足够的交货港口,每次交货将额外收取每小时 50 美元的费用(最长为 3 小时)

场景 2 细微差别:

  1. 为第二项服务共享一个交货港的企业将收取每件 11 美元的费用
  2. 如果企业不共享交货港,则费用为每件 13 美元。不共享港口的企业的每次额外交付费用为每次交付 15 美元,此外每件商品的成本为 13 美元(最大交付量为 7 件,最大数量为 8 件)。

你知道我将如何处理所有这些。接下来的两个场景同样冗长。可悲的是,除了总账单外,没有提供任何信息。我们不知道账单属于哪个场景,项目数量等,只是发票的单列。我将如何确定每种情况下的所有潜在成本以索引发票并查看是否匹配?对此的任何帮助都将是惊人的。

我尝试创建一个索引,在其中写出多个场景。例如,列有商品数量、交货数量、购买 > 1 件商品的折扣、回收折扣等……尝试了两个小时后,我意识到这可能不是最好的方法。我的第一行将是 1 件商品,1 次送货,购买 > 1 件商品的 0% 折扣和回收的 0% 折扣。接下来是购买 2 件商品,1 次送货,购买 > 1 件商品可享受 20% 的折扣,回收时可享受 0% 的折扣。这似乎是不可能对所有事情都做到的。

如果发票总额与索引中的一项潜在成本相匹配,我的预期输出为“Y”,否则为“N”。

标签: excelvbaexcel-formula

解决方案


您可以编写一个宏来计算每个可能的场景。编写一个带有嵌套循环的宏。

  • 外部循环是数量,例如For ItemQty = 1 to 100(或其他一些可能的最大值)。
  • 内部循环是场景和细微差别,例如For BoxesRecycled = 0 to 1. 每个循环都会修改总数,例如Total = Total - (BoxesRecycled * 0.15 * Total).
  • 在所有循环的中间是写一行的代码,其中包含数量、细微差别和总数。

您将需要匹配应用费用和折扣的顺序以及四舍五入的方式。可能这个序列被打折 20%,然后打折 15%,然后四舍五入。但也许它被打折 20%,然后四舍五入,然后打折 15%,然后四舍五入。如果您不匹配顺序和四舍五入,那么您的总数可能与实际发票相差 1 美分。


推荐阅读