【问题标题】:SUMPRODUCT with SUMIFSUMPRODUCT 与 SUMIF
【发布时间】:2014-07-30 17:18:58
【问题描述】:

我目前有这个:

=SUMPRODUCT(SUMIF(A:A;Index(List;;1);B:B))

A 列是名称列表,B 列是每个名称的值列表。命名范围列表有 2 列,第一列是名称,第二列是布尔值(0 或 1)。

如果该名称在我的命名范围列表的第一列中,我的公式实际上可以返回 A 列中其对应名称的每列 B 值的总和。它工作正常。

但是,我想过滤它以仅包含 List 中布尔值等于 1 的名称(即Index(List;;2) = 1

这怎么可能?

这是我尝试过的,但它给了我一个#REF!错误:

=SUMPRODUCT(SUMIF(A:A;Index(List;;1)*Index(List;;2);B:B))

【问题讨论】:

  • 当您用分号替换逗号时,我认为您注意到 List 后面的两个逗号?
  • 是的,但我的问题似乎与我的列表有关。如果我这样做=INDEX(LIST;60;1) 一切都很好,但是一旦我尝试另一列(例如将 1 替换为 2),我就会得到 #REF!错误。列表实际上是=$B$2:$B$100;$L$2:$W$100(这是来自另一张表,B 列是唯一名称,所有其他列 L:W 是 0 或 1)。我认为它与没有 C:K 列的 B2:W100 范围相同,但似乎并非如此。

标签: excel excel-formula excel-2010


【解决方案1】:

最好切换到数组公式**

=SUM(SUMIF(A:A,IF(INDEX(List,,2),INDEX(List,,1)),B:B))

**数组公式的输入方式与“标准”公式不同。不是只按 ENTER,而是先按住 CTRL 和 SHIFT,然后再按 ENTER。如果操作正确,您会注意到 Excel 在公式周围放置了大括号 {}(尽管不要尝试自己手动插入)。

【讨论】:

  • 它返回 0。我将不得不做更多的测试来理解为什么。我不得不为分号更改每个逗号。
  • Excel如何自动循环遍历List的行?我不明白。例如,我的 A 列有 100 行,因为同名可以在这里多次出现,而 List 的第一列是唯一的。
  • 这个对我来说也是最有意义的!! +1
【解决方案2】:

由于您的命名范围由不连续的范围组成,因此在对它进行索引时,您需要包括 INDEX 的第四个参数 (area_num) 以明确哪个范围($B$2:$B$100 或 $L$2:$W$100 ) 你想参考,例如:

=INDEX(List,60,1,**2**)

这将返回单元格 L61 中的值。

问候

【讨论】:

  • 这适用于您之前的公式吗? {=SUM(SUMIF(A:A,IF(INDEX(List,,2, 2),INDEX(List,,1)),B:B))}
  • 它总是返回 0。我测试了 Index 函数并且它们正在工作。我还测试了 IF 条件,它也可以正常工作,我的 0 和 1 被正确解释为布尔值。有什么想法吗?
  • 从我的第一个公式中得到了它:=SUMPRODUCT(SUMIF(A:A;IF(INDEX(List;;6;2);INDEX(List;;1);0);B:B))。如果不作为数组公式输入,它仍然有效,但不会检查 IF() 条件。这是为什么?我搜索了一些数组公式,但没有真正找到任何具体原因。
  • 如果没有数组输入,我看不出它是如何工作的,因为正如你所说,IF 子句将不会被处理。此外,由于需要 CSE,您也可以将 SUMPRODUCT 更改为 SUM。
  • 我将 SUMPRODUCT 换成了 SUM,无论如何它给出了相同的结果,所以我猜不需要 SUMPRODUCT。非常感谢您的帮助,它现在完美运行。我会接受你的其他答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多