我正在建立一个信封系统,我在每个支付期间提取一些账单并将它们放入信封中。我想要做的是通过公式确定每个我需要多少账单。这是一个例子: -
我的资金将是:
Kids $ 10
Car $ 50
Gas $100
Groceries $225
Gifts $ 40
---------------
Total: $425
我想要的是一个基本公式来提取每个账单的数量:$ 1,$ 5,$ 10,$ 20和$ 50
如何从这个列表中提取50美元的数字,这应该给我7 [1辆汽车,2辆汽油,4件杂货]?
最终目标应该是:
0 $ 1 bills $ 0
1 $ 5 bills $ 5
1 $10 bills $ 10
3 $20 bills $ 60
7 $50 bills $350
--------------------
Total Cash: $425
答案 0 :(得分:2)
UNTESTED。 A2中的Kids
和C1:G1中的50,20,10,5,1然后可能在C2中并且上下复制:
=INT(MIN($B2,$B2-SUMPRODUCT($B$1:B$1*$B2:B2))/C$1)
然后可以按列(不包括标签)对结果求和,以按面额计算每个总和,并将每个总和乘以列标签(例如=SUM(C2:C10)*C$1
),然后总和作为对总数的交叉检查
答案 1 :(得分:1)
假设您的表位于A2:B6
范围内,我会在其右侧使用一些辅助单元格,如下所示:
| A | B | C | D | E | F | G |
50 20 10 5 1
Kids 10 0 0 1 0 0
Car 50 1 0 0 0 0
Gas 100 2 0 0 0 0
Groceries 225 4 1 0 1 0
Gifts 40 0 2 0 0 0
这些是第2行中的公式:
C2: =ROUNDDOWN(B2/C$1,0)
D2: =ROUNDDOWN((B2-C2*C$1)/D$1,0)
E2: =ROUNDDOWN((B2-C2*C$1-D2*D$1)/E$1,0)
F2: =ROUNDDOWN((B2-C2*C$1-D2*D$1-E2*E$1)/F$1,0)
G2: =ROUNDDOWN((B2-C2*C$1-D2*D$1-E2*E$1-F2*F$1)/G$1,0)
如果您使用更多具有中间结果的辅助列,这些公式可能会更简单。
然后将它们复制到下面的行中。最后,您可以使用每个辅助帐单列的简单SUM
获取结果,根据需要放置它们,并将这些结果乘以另一列中的帐单值。
答案 2 :(得分:0)
一种可能的方法是实现以下算法:
在您的示例中,我们将(a,b,c,d,e,f)=(10,50,100,225,40)
作为我们的值集。对于与您的值列相邻的列中的每个值=ROUNDDOWN(a/50,0)
,=ROUNDDOWN(b/50,0)
等运行。
接下来,将这些值乘以除数(在本例中为50)并从初始量中减去该值。
现在在10,5和1的循环中再次运行它。也就是说,在除数数组(50,10,5,1)上运行它。每个除数值需要三列,一个用于初始使用= ROUNDDOWN(),一个用于乘法,一个用于减法。总共那么你需要12列信息。
可能有一种方法可以在VBA中实现这一点,将其简化为每个帐单类型所需的三列计数。