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,"")
等等。