【问题标题】:How to return values until threshold is reached in Excel如何在Excel中达到阈值之前返回值
【发布时间】:2017-01-16 04:45:12
【问题描述】:

我正在努力解决 Excel 中的一个计算问题,这似乎比我想象的要难。我只是在互联网上找不到我需要的方法。我将提供我想要获得的简化版本,并且永远感谢任何可以帮助我获得结果的人。

我有以下行:

100 // 20 / 30 / 10 / 60 / 20 / 80

我想看到的是:

100 // 20 / 30 / 10 / 40 / 0 / 0

所以第一列是一个总计,对于所有接下来的列,我有时间分布的值,这些值应该加到这个总计中,并返回单元格中的值,以及在某些时候需要的数量等于第一个单元格中的 100。之后,达到阈值,它应该返回零。

是否有一些我不知道的公式或解决此问题的优雅方法?非常感谢您的帮助!

【问题讨论】:

  • 我不明白。您是说您的原始值应该被新值覆盖吗?如果不是,您能否举例说明原始值所在的范围以及结果应该在哪个范围内(例如,对于您的第一行)?
  • 是的,我想覆盖这些值,以便累积到第一列中的“100”。
  • 那你肯定需要VBA。

标签: excel excel-formula sum conditional cumulative-sum


【解决方案1】:

如果您的第一行从 Sheet1 中的 A2:G2 开始(分别为 100 / 20 / 30 / 10 / 60 / 20 / 80),则可以通过在 Sheet2 的单元格 B2 中输入公式来使用以下公式并拖动到G2

 =IF(COLUMN(B2)=2,'Sheet1'!B2,IF('Sheet1'!B2+SUM(A2:$B2)>='Sheet1'!$A2,'Sheet1'!$A2-SUM(A2:$B2),'Sheet1'!B2))

【讨论】:

  • 太棒了,谢谢!现在,我只需要在行本身中得到这个结果,因为我有一个包含数百行的大数据表,我认为每次添加一行都会变得非常混乱。有没有办法做到这一点?
  • 在不使用 VBA 的情况下,使用包含您实际覆盖的单元格中的值的公式覆盖值有点困难。您可以只创建一个新表并让单元格引用匹配,我将更改一些绝对引用,以便可以将公式复制到整个表中。
  • @RFM 就速度而言,通过 VBA 可能是最简单的方法。另一种方法是切换到手动计算,输入您的数据(也可以复制和粘贴),然后切换回自动计算或按 F9
  • @RFM 我现在已经编辑了答案,所以如果您要让所有数据从“Sheet1”中的 A2:G2(及向下)运行,并且提供的公式从 B2:G2 运行在“Sheet2”中,如果向下复制它应该可以工作。
  • 谢谢@Jordan,@Clauric!我认为这会成功。我想潜入 VBA 对我来说有点过于雄心勃勃了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
相关资源
最近更新 更多