我怎样才能按百分比分配一个总数,每个单元格是一个整数?

Date Nov-11 Dec-11 50 102 Percent 0 0 0 34 34 33 33 33 33 0 Apportion 0 0 0 35 17 34 16 34 16 0 Sum 49 103 

第一列的5个百分数对应于在分配标题下的5个单元中将上述50分成整数部分。 那里的结果来自一个简单的回合(x *%,0)。 我希望下面的所有值总和到第一列中的50。 这可以通过在“分配”部分中更改任意数量的非零值来完成。

如果可以用公式做到这一点,我一直无法弄清楚。 我尝试的每一件事都是循环引用。 问题是,任何百分比都可以是0,所以我不能只创build一个桶来解释溢出/溢出。

请让我知道是否需要更多的信息。 这是我第一次在SO上提出一个问题。 我不能附上图片,所以我试图用代码来绘制上面的表格。

这是一个解决scheme,将调整最后一个非零百分比的部分。

基于数据布局如下:
总分A1
A5:A9百分比A5:A9
百分比范围之后的一个单元格必须为空( A10
A12:A16分摊A12:A16

Aportionment范围的公式(单元格A12 ,然后复制下来,也可以复制)

 =IF(AND(SUM(A6:A$10)=0,A5>0),A$2-SUM(A$11:A11),ROUND(A$2*(A5%),0)) 

怎么运行的:

  1. IF(AND(...通过总和当前的百分比来确定单元格是否为最后一个非零百分比Sum范围扩展了百分比范围之外的一个单元格,使其适用于最后一行。
  2. 如果IF为真,则将计算结果计算为Target - Sum(Rows Above)Sum范围扩展了百分比范围之上的一个单元格,使其适用于第一行。
  3. 如果IF为假,则计算分摊比例为一个四舍五入的百分比

这是实现你的目标的不同方式。

这显示了工作表的外观,除了(1)列B和D将被隐藏,并且(2)值不会像我已经显示的那样被左alignment。

  |A |B |C |D | 1 |Date | | | | 2 |Nov-11 | |Dec-11 | | 3 |50 | |102 | | 4 | | | | | 5 |Percent | |Percent | | 6 |0 | |0 | | 7 |0 | |34 | | 8 |34 | |33 | | 9 |33 | |33 | | 10 |33 | |0 | | 11 | | | | | 12 |Apportion | |Apportion | | 13 |0 |0.00 |0 |0.00 | 14 |0 |0.00 |35 |0.32 | 15 |17 |0.00 |33 |-0.66 | 16 |17 |0.50 |34 |0.34 | 17 |16 | |0 | | 18 | | | | | 19 |Sum | |Sum | | 20 | | | | | 21 |50 | |102 | | 

以下单元格包含显示的公式:

 A13 =ROUND(IF(A6=0,0,A$3*A6/100)-B12,0) A14 =ROUND(IF(A7=0,0,A$3*A7/100)-B13,0) A15 =ROUND(IF(A8=0,0,A$3*A8/100)-B14,0) A16 =ROUND(IF(A9=0,0,A$3*A9/100)-B15,0) A17 =ROUND(IF(A10=0,0,A$3*A10/100)-B16,0) A21 =SUM(A13:A17) B13 =A13-IF(A6=0,0,A$3*A6/100) B14 =A14-IF(A7=0,0,A$3*A7/100) B15 =A15-IF(A8=0,0,A$3*A8/100) B16 =A16-IF(A9=0,0,A$3*A9/100) 

公式必须input到A13和B13中,然后复制下来。 注意B17不需要公式,但是B17没有被引用,所以如果它有一个公式就没有关系。

复制A13:B17到C13:D17

B13包含已经添加到A13的数量,使其成为一个整数。 在A14被舍入之前,从A14中减去B13。 等下来列。 结果是所有的舍入在后面的行中都用完了。

之前我曾经使用这种技术,我的客户对结果感到满意。 没有使用VBA,你不会比这更好。