以编程方式用两个值组合的所有可能总和填充Excel列

时间:2019-02-25 22:09:13

标签: excel vba

我试图根据计算的数量来填充一列,具体取决于作为参数提供的数量。例如,如果我插入该插件,则需要从两种可能的窗口小部件类型中购买50个窗口小部件:

Widget 1: $1.00
Widget 2: $1.15

我希望能够用50个不同的值填充一列,每个值分别是50个“小部件1”的总价,49个“小部件1”和1个“小部件2”的总价,依此类推。以下示例显示了第一个可能组合的总价的电子表格:

enter image description here

这样的想法是,仅通过在电子表格中更改B4 / X,我就可以获得X个小部件总数的每个小部件组合的总和,并且每个总和都在其自己的单元格中。我有一个公式的开头来计算此值,它似乎可以用于不同的小部件1/2混合的迭代,但是B4值是硬编码的,而且我也不知道如何将公式沿列{{1 }}与C中的值相同的次数。 VBA可能是我最好的选择吗?

B4

2 个答案:

答案 0 :(得分:1)

您可以像这样使用ROW()函数:

=IF(OR(ROW()-ROW($C$2)<0,$B$4<ROW()-ROW($C$2)),"",(($B$4-(ROW()-ROW($C$2)))*$B$2+(ROW()-ROW($C$2))*$B$3))

您必须将其拉低至B4的最大可能值。如果B4的实际值小于最大值,则该公式将导致空字符串。

答案 1 :(得分:1)

类似于z32a7ul的回答,但可能短一些:

    =IF($B$4+2-ROW()>=0,($B$4+2-ROW())*$B$2+(ROW()-2)*$B$3,"Out of Bounds")

公式1)检查是否超出了小部件求和的可能组合的数量,并且2)如果没有则粘贴和,或3)如果有,则写“ out of bounds”。从第2行开始(例如,单元格C2),然后往下拉。

公式假定a)您以row 2开始(否则,将公式中的每2更改为您开始的行)。 窗口小部件的价格位于单元格B2B3中(否则更改引用,并保留$符号,因此当向下拖动公式时,引用将保留) 组合数在B4中(同样,如有必要,请进行调整)