如何在Excel中将正数除以负数?

问题描述 投票:0回答:1

所以我正在尝试自动化解决一个问题,假设你有最多 5 个数字,并且至少有一个负数,如何通过从正数中取值来最小化这个负数?

以数组 (-27.5, -22, 19.5) 为例,看看这个就很简单了,我们可以将 19.5 分配为 19.5 x 27.5 / (27.5 + 22) = 10.8 和 19.5 x 22 / (27.5 + 22) = 8.7,所以我们得到 (-27.5 + 10.8, -22 + 8.7, 19.5 - 19.5) = (-16.7, -13.3, 0)。

再举一个例子 (14, -6, 18) 应该给出 -2.625, 6, -3.375 然后给出 (11.375, 0, 14,625)。

这是非常简单的数学,因为我可以确定需要分配哪些单元格,但我发现在 Excel 中编程真的很难。

因此,如果该行是 C14:E19,则 C14 单元格将如下所示:

=IF(C14<0, MIN(SUMIF($C14:$E14,">0"), ABS(C14)) * ABS(C14) / SUMIF($C14:$E14,"<0"), IF(C14>0, -C14 * SUMIF($C14:$E14,"<0") / SUMIF($C14:$E14,">0"), 0))

这首先在我的测试用例中给了我错误的信号,但这是一件小事。另一个问题是,以我的第一个情况为例,在 19.5 上它返回 49.5 而不是 -19.5 以使其等于零,而在第二个问题上 -6 返回另一个 -6。

总而言之,我觉得我已经接近目标了,但在这上面花了相当多的时间,我无法再进一步了。我希望有一个头脑清醒的人可以阻止我愚蠢......

excel excel-formula
1个回答
0
投票

尝试概括一下,我得到:

=LET(range,A2:A4,
sumPos,SUMIF(range,">0"),
sumNeg,SUMIF(range,"<0"),
toAdd,MIN(sumPos,-sumNeg),
IF(range<0,range+toAdd*range/sumNeg,range-range*toAdd/sumPos))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.