【问题标题】:How to sum values based on criteria ranges that are both columns and rows?如何根据既是列又是行的条件范围对值求和?
【发布时间】:2017-09-07 13:54:27
【问题描述】:

我正在尝试编写一个求和公式,它将返回两个日期之间唯一引用的总和值。

在我的范围表(我要求和的那个)上,日期在第 9 行(从 K 列到 IP),唯一引用在 B 列(B10 到 B139(行数不同))。

在我的结果表(我正在尝试编写公式的地方)有一个列表,其中列出了出现在工作表 A 上的所有唯一引用。

单元格 I7 包含开始日期,而 J7 包含我想要合计的日期的结束日期。

我尝试过的所有公式都返回 #Value 错误:

=SUMIFS(Output!K10:IP139,Output!B:B,G12,Output!9:9,">="&I7,Output!9:9,"<="&J7)

^我意识到这不起作用,因为所有标准范围都需要在列中。 *据我所知,对于 SUMIF 公式

=SUM(IF(Output!K9:FG9>='Stock + Demand'!I7,IF(Output!K9:FG9<=J7,IF(Output!B:B=G11,Output!K11:IP139))))

^也返回#Value错误。

我也尝试了 Sumproduct 公式,但这只是让我的 excel 超载(“Excel 在尝试计算时用尽了资源”消息),所以不知道这是否会返回所需的结果。无论哪种方式我都需要一个适用于相同类型但包含 2000 多行数据的工作表的公式。

我认为显示工作表的一些图像会有所帮助,但我的工作电脑不允许我保存图像(非常令人沮丧)。回家后我会尝试上传一些。

编辑 - 已解决

这是有效的公式:

=IFERROR(SUM(OFFSET(Output!$A$1,MATCH(SUMIF(Output!$B:$B,$G11,Output!$A:$A),Output!$A:$A,0)-1,MATCH(I$7,Output!$9:$9,0)-1):OFFSET(Output!$A$1,MATCH(SUMIF(Output!$B:$B,$G11,Output!$A:$A),Output!$A:$A,0)-1,MATCH(J$7,Output!$9:$9,0)-1)),"")

输出是数据工作表,OutputA:A 和 B:B 是参考列,I7 和 J7 分别是开始和结束日期,输出 9:9 是日期查找行,G11 是要在输出 B 中查找的唯一值:B.

【问题讨论】:

  • 你能贴一张你的桌子的图片吗?
  • 由于您无法发布照片,因此最好以任何方式模拟数据,然后使用 edit 将其放入 OP 中

标签: excel excel-formula excel-2013 sumifs


【解决方案1】:

这是一个数组公式,需要通过Ctrl + Shift + Enter来确认p>

{=SUM(IF(Dates&gt;=I7,IF(Dates&lt;=J7,IF(References=G12,Data))))}

命名范围是:
- 日期:K9:IP9
- 数据:K10:IP139
- 参考:B10:B139

本质上,if 语句将数据数组构建为所需值或 FALSE,然后将其传递给 SUM() 以进行添加。虽然如果这是一个每行公式,您最好将每一行分别SUMIFS(Data,Dates,"&gt;="&amp;I7,Dates,"&lt;="&amp;J7) 以避免使用数组公式。

【讨论】:

  • 我在家用笔记本电脑上试过这个,我收到“资源不足”的消息,我明天上班试试,在那里我可以使用超过 50kb 的 PC RAM 呵呵
  • @TomHolland 你是不是把公式放在一个单元格中?我知道数组公式是 RAM 密集型的,但是即使数据集那么大,1 个单元格也不应该是太大的问题......也许每行上的 SUMIFS() 路由在这种情况下会更好,你可以 SUM() 那柱子。如果还是不行,您可以打开手动计算,并在需要时使用按钮或F9 进行计算。
  • 是的,只来自一个单元格。我在构建时总是关闭计算,只是在我的工作 PC 上尝试过并得到相同的消息,但是我找到了另一个答案:=IFERROR(SUM(OFFSET(Output!$A$1,MATCH(SUMIF(Output!$B:$B,$G11,Output!$A:$A),Output!$A:$A,0)-1,MATCH(I$7,Output!$9:$9,0)-1):OFFSET(Output!$A$1,MATCH(SUMIF(Output!$B:$B,$G11,Output!$A:$A),Output!$A:$A,0)-1,MATCH(J$7,Output!$9:$9,0)-1)),"")
  • @TomHolland 哇,你的机器工作速度很慢,但是我身后有 16GB 的 RAM 和 i7,所以我有时会忘记机器限制......很高兴你解决了它......
【解决方案2】:

我在办公室找到了一位 excel 大师,他编写了一个使用 MATCH 和 OFFSET 的公式,数据表左侧有几列唯一值,可用于识别要求和的行号from 和类似的设置日期范围。我现在在家,手头没有公式,但我确实有一个我想使用的工作表示例(可能对像我这样的人有帮助):

Table

我的结果选项卡上有每个月的开始和结束日期,以及 B 列中的项目编号和一些连接(仅“框架顺序”)的列表。

我明天会发布公式。刚刚尝试重新创建它并惨遭失败:(

编辑

这是有效的公式:

=IFERROR(SUM(OFFSET(Output!$A$1,MATCH(SUMIF(Output!$B:$B,$G11,Output!$A:$A),Output!$A:$A,0)-1,MATCH(I$7,Output!$9:$9,0)-1):OFFSET(Output!$A$1,MATCH(SUMIF(Output!$B:$B,$G11,Output!$A:$A),Output!$A:$A,0)-1,MATCH(J$7,Output!$9:$9,0)-1)),"")

输出是数据工作表,OutputA:A 和 B:B 是参考列,I7 和 J7 分别是开始和结束日期,输出 9:9 是日期查找行,G11 是要在输出 B 中查找的唯一值:B.

【讨论】:

  • 哦,聪明!很好地使用偏移量,我什至从未想过 xD
猜你喜欢
  • 2019-12-23
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 2016-10-23
  • 2019-07-15
  • 2020-05-09
  • 1970-01-01
  • 2021-01-25
相关资源
最近更新 更多