首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当单元格即将达到零时,停止从单元格中扣除一行中的值。

当单元格即将达到零时,停止从单元格中扣除一行中的值。
EN

Stack Overflow用户
提问于 2018-07-12 08:51:47
回答 1查看 48关注 0票数 1

考虑以下数据(假设所有数据都在第1行中):

代码语言:javascript
复制
A   B   C   D   E   F   G
20  7   3   4   3   8   7

我想要做的是从A1中扣除第1行中的值,从最右边的值(G1)开始,从左开始(以B1结尾)。一旦该值即将产生负结果,我希望它停止从那里扣除。在给定的示例中,该公式应该具有如下所示的逐步方法:

代码语言:javascript
复制
A1-G1 (20-7) = 13
A1-G1-F1 (13-8) = 5
A1-G1-F1-E1 (5-3) = 2
A1-G1-F1-E1-D1 (2-4) = -2

在第三步中,一旦检测到第四个值(D1)的演绎结果为负值,它就会停止从那里进行推导,公式的结果应该是值为2。

我为此做了两件事:

  1. 我使用了一个长倍数IF语句,其模式如下: =A1-IF(A1-G1<0,0,G1)-IF(A1-G1-F1<0,0,F1)....
  2. 我在单元格B2中使用了一个助手列,然后转到G2,并在B2中输入以下公式并拖动到右边: =IF(A1-SUM(B1:$G$1)<0,0,A1-SUM(B1:$G$1))

在此之后,我只使用MIN()函数来获得所需的值。

现在,这方面的问题是,我不得不对数十万行这样做,并且所有行的大多数单元格都将继续添加值。我想做的是将一个帮助表链接到我的原始数据,并使用第二个选项来获得最小值。我可以使用SUM()函数中的COUNTIFADDRESSSUBSTITUTEINDIRECT方法链接列字母,我认为这些方法会很好。我只是想知道我是否可以避免所有这些工作,而是使用一个单一的公式来实现我的要求。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-07-12 10:21:30

我可以看到一个偏移的解决方案,从第一个数字(20)中减去数字(32)的总和,得到一个负数(-12),然后开始添加数字7,7+3,7+3+4…。直到得到一个正数(+2)。它看起来如下(输入为数组公式):

代码语言:javascript
复制
=INDEX((A1-SUM(B1:G1)+SUBTOTAL(9,OFFSET(A1,0,1,1,COLUMN(B1:G1)-1))),
MATCH(TRUE,(A1-SUM(B1:G1)+SUBTOTAL(9,OFFSET(A1,0,1,1,COLUMN(B1:G1)-1)))>0,0))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51301185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档