【问题标题】:Summing a range of numbers after checking that is greater than a year在检查大于一年后对一系列数字求和
【发布时间】:2018-01-05 05:40:31
【问题描述】:

目前,我正在 Excel 上创建一个未结付款清单,以帮助合并逾期超过一年的数字和数字(单元格 C44)。

图片的问题在于,日期为 12.12.17 的 55 美元发票 #55 尚未支付一年,但它出现在单元格 C44 中。

我将 dd.mm.yy 中的日期列格式化为文本。那么我该如何对其进行编码,使其检查所有日期(B列)并仅在日期超过一年时才将其汇总到单元格C44中?

这是代码示例。

=SUMIF(B24:B29,"<31.12.16",E24:E29)-SUMIF(B24:B29,"<31.12.16",G24:G29)

任何帮助将不胜感激。

2018 年 6 月 1 日更新

我尝试将 MID 公式集成到这样的代码中 =SUMIF(B24:B29,MID(B24:B29,7,2)<="16",E24:E29)-SUMIF(B24:B29,MID(B24:B29,7,2)<="16",G24:G29)

但它返回 0。我该怎么办?

【问题讨论】:

  • 我强烈建议不要将您的日期存储为文本。这使公式变得更加困难。
  • 注意到了,但自从上次他们使用文本存储日期以来,这是我公司的标准。我被告知尽可能不要更改。哦,好吧..

标签: excel excel-formula excel-2016


【解决方案1】:

由于您的日期始终为 dd.mm.yy,您可以使用 DATE() 函数从部分构建日期:

=DATE("20"&RIGHT(B24:B29,2),MID(B24:B29,4,2),LEFT(B24:B29,2)) - 此答案中的所有公式都是数组公式; Ctrl + Shift + Enter 仍在编辑栏中时

这将构建一个日期数组。

使用它你可以对日期值进行逻辑运算:

=IF(DATE("20"&RIGHT(B24:B29,2),MID(B24:B29,4,2),LEFT(B24:B29,2))<DATE(2016,12,31),E24:E29-G24:G29)

这样做,我们现在构建了一个由E 中的值减去G 中的值组成的数组,所以剩下的就是求和:

=SUM(IF(DATE("20"&RIGHT(B24:B29,2),MID(B24:B29,4,2),LEFT(B24:B29,2))<DATE(2016,12,31),E24:E29-G24:G29))

编辑:

=SUM(IF(IFERROR(DATE("20"&RIGHT(B24:B29,2),MID(B24:B29,4,2),LEFT(B24:B29,2))<DATE(2016,12,31),0),E24:E29-G24:G29,0))

生成0 值以避免错误。

【讨论】:

  • 尝试输入您的代码,它返回了#VALUE。
  • @MelvinGoh 抱歉,当无法形成日期时,DATE() 部分返回 #VALUE,我已将其包装在 IFERROR 中以生成 0,请参阅编辑
  • 嗯,仍然返回零。我尝试将日期更改为 12.12.14,但仍然没有更新到正确的数字。不过感谢您的尝试。
  • @MelvinGoh 逻辑运算符在我的答案中被硬编码:<DATE(2016,12,31) 这是正在评估的部分。你做了Ctrl+Shift+Enter吗?应该可以工作了,我明天回到电脑前看看
  • 哇哦,谢谢理查德!有效。我没有按 Ctrl+Shift+Enter。现在我这样做了,它奏效了。单独按“enter”和“Ctrl+Shift+Enter”有什么区别?我不太明白其中的区别。
猜你喜欢
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 2021-12-31
  • 2012-03-04
  • 2014-10-24
相关资源
最近更新 更多