所有可能的连续总和的最大值

时间:2016-10-23 07:48:43

标签: excel excel-formula

有没有办法用公式写这个。

=Max(a, a+b, a+b+c, a+b+c+d, a+b+c+d+e+...)  

我不想使用VBA执行此任务,我不知道如何解决此问题。

Excel sheet expanded with formula
Excel sheet contracted without formula

目标:

1)对于每个人(Bill,Ben,Katy),我想比较X与时间之和的最大值。

例如,在J列中,我想知道X的总和的当前最大值。当前是1月17日的日期,因为它是最近的条目。

2)对于每个人(Bill,Ben,Katy),我想比较前一个条目的最大值与我最近的条目的最大值。

例如,在K列中,我想将1/5/16的X之和的最大值与1/17/16的X之和的最大值进行比较。

3)我希望将J和K列重新计算,因为我将新数据条目引入第I列。截至目前,使用下面提到的解决方案,在J列中,我想我会使用类似这样的公式:
=MAX(MMULT(0+(ROW(B9:I9)>=TRANSPOSE(ROW(B9:I9))),B9:I9)
如果我只让X垂直向下,这个解决方案似乎有效 此外,随着新数据的引入,J列和K列将被推向右侧,成为K列和L列。

4)第I列和第J列中突出显示的区域是我的输出部分,它们取决于Cell B1的日期。

例如,如果我要在Cell B1中将日期更改为1/1/2016,则Cell I7将等于-4 Cell J7将等于True。

如果我要在Cell B1中将日期更改为1/17/16,则Cell I7将等于5,而Cell J7将等于True。

我一直在玩这个,尝试使用SUMIFS根据日期标准获取X的总和。

我提前感谢所有人的帮助,如果我对这个问题的措辞不清楚,我会道歉。我是一名本科生,没有计算机/编程背景或任何类似的背景。非常感谢你!

2 个答案:

答案 0 :(得分:1)

假设abc等位于列中,则标准方法是使用附加列,其中输入列中的值的累积总和。然后,您可以使用累计总和来获取列的MAX

E.g。使用B列中的累积和与A列中的输入值:

enter image description here

在C列中使用MAX公式:

enter image description here

答案 1 :(得分:0)

假设A1:A5中的数据,您可以使用此array formula**

=MAX(MMULT(0+(ROW(A1:A5)>=TRANSPOSE(ROW(A1:A5))),A1:A5))

由于其非挥发性,优于:

=MAX(SUBTOTAL(9,OFFSET(A1:A5,,,ROW(A1:A5)-MIN(ROW(A1:A5))+1)))

此致

**数组公式的输入方式与'标准'相同。公式。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果您已正确完成,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。