Excel – 公式来查找N个单元格的总和

我想知道总共需要多less个单元格。请看下面的例子:

number | cells to sum of 100 100 | 1 50 | 2 20 | 3 25 | 4 15 | 4 90 | 2 10 | 2 

看最后一列,find当前单元格的最小数目+上一个单元格的总和为100。

有没有办法做到这一点?

谢谢。

B2数组公式**

=IFERROR(1+ROWS(A$2:A2)-MATCH(100,MMULT(TRANSPOSE(A$2:A2),0+(ROW(A$2:A2)>=TRANSPOSE(ROW(A$2:A2)))),-1),"Not Possible")

根据需要复制。

根据需要更改硬编码阈值(此处为100)。

作为对部分的解释方式:

MMULT(TRANSPOSE(A$2:A2),0+(ROW(A$2:A2)>=TRANSPOSE(ROW(A$2:A2))))

使用提供的数据并从B5获取上述版本,即:

MMULT(TRANSPOSE(A$2:A5),0+(ROW(A$2:A5)>=TRANSPOSE(ROW(A$2:A5))))

其中的第一部分,即:

TRANSPOSE(A$2:A5)

收益:

{100,50,20,25}

其中第二部分即:

0+(ROW(A$2:A5)>=TRANSPOSE(ROW(A$2:A5)))

解决:

0+({2;3;4;5}>=TRANSPOSE({2;3;4;5}))

即:

0+({2;3;4;5}>={2,3,4,5})

这是:

0+{TRUE,FALSE,FALSE,FALSE;TRUE,TRUE,FALSE,FALSE;TRUE,TRUE,TRUE,FALSE;TRUE,TRUE,TRUE,TRUE})

这是:

{1,0,0,0;1,1,0,0;1,1,1,0;1,1,1,1}

对matrix乘法的理解将告诉我们:

MMULT(TRANSPOSE(A$2:A5),0+(ROW(A$2:A5)>=TRANSPOSE(ROW(A$2:A5))))

这里是:

MMULT({100,50,20,25},{1,0,0,0;1,1,0,0;1,1,1,0;1,1,1,1})

是:

{195,95,45,25}

即一个数组的四个元素分别相当于:

=SUM(A2:A5) =SUM(A3:A5) =SUM(A4:A5) =SUM(A5:A5)

问候

**数组公式不是以与“标准”公式相同的方式input的。 按住CTRL键和SHIFT键,而不是按下ENTER键,然后按ENTER键。 如果你做得对,你会注意到Excel在公式周围放置了大括号(尽pipe不要试图自己手动插入这些)。

我做了第一个3的excel公式:D3> 100 C4是你的数字开始,所以C4 = 100,C5 = 50等公式是在D4,D5,D6等

在D4上:

= IF(C4> = D3; 1; “假”)

在D5上:

= IF(C5> = D3; 1; IF(C5 + C4> = D3; 2; “错误”))

在D6上:

= IF(C6> = D3; 1; IF(C6 + C5> = D3; 2; IF(C6 + C5 + C4> = D4; 3; “错误”)))

你可以继续这样做,只要用更长的/更新版本的IF(C6 + C5 + C4> = D4; 3)replace“错误”

我不知道这是否是最好的方法,但是这样做会达到目的。

解决这个问题的一个方法是创build一个NxN方程matrix,而不仅仅是一列。 提供了一个示例图片。 E到I列是隐藏的。 右边的最后一列决定了所需的数字

解

从理论上讲,如果达到100所需的行数是一个已知的小数,那么也可以对方程进行硬编码。 例如,如果行数总是等于或小于4,则C8将是=IFS(B8>=100,1,SUM(B7:B8)>=100,2,SUM(B6:B8)>=100,3,SUM(B5:B8)>=100,4) 。 顺便说一句,你会遇到第一,第二和第三行上的这个方程的总和边界问题。 因此,第一行将需要=if(B8>=100,1,"") ,第二行将是=IFS(B9>=100,1,SUM(B8:B9)>100,2,TRUE,"")等等。