sumproduct excel 多表

Posted

技术标签:

【中文标题】sumproduct excel 多表【英文标题】:sumproduct excel multiple tables 【发布时间】:2013-09-09 00:04:10 【问题描述】:

我有两个表,我想通过引用另一个表来计算一个项目的出现次数,

例如,我想知道 Bob 拥有多少条蛇,显而易见的答案是两条,但我如何在一个公式中做到这一点?我已经使用 sumproduct 来计算单个蛇的出现次数,但我希望通过引用第二个表将它们全部放在一个公式中。这可能吗?

注意: 我有 excel 2003,因此 sumproduct

    A      B    
1  Bob    Boa
2  Ann    Cow
3  Bob    Sheep
4  Bob    Python

    A      B
1  Farm   Snake
2  Cow    Boa
3  Sheep  Python

【问题讨论】:

请澄清您的问题。不清楚 bob 有两条蛇,也不清楚第一张桌子与第二张桌子的关系。你希望在这里做什么? 哦,等等,你的意思是表2的B列中的项目是蛇的名字,你想计算第一个表中蛇的数量,因为第二个表中列为蛇,属于鲍勃?您可以使用辅助列,还是需要一个公式? 我想在第二个表中查找第一个表的B列,动物类型为“蛇”,如果存在匹配项,请将其包含在计数中。 我可以使用辅助列,但我宁愿不使用 数组公式中的数组公式并不能很好地工作。辅助栏是您最好的选择。 【参考方案1】:

当然可以使用现有布局而不使用辅助列来执行此操作。假设A1:B4 中的第一个表和D1:E3 中的第二个表,你可以通过这个公式得到 Bob 拥有的蛇的数量

=SUMPRODUCT((A1:A4="Bob")*ISNUMBER(MATCH(B1:B4,INDEX(D2:E3,0, MATCH("snake",D1:E1,0)),0)))

我认为第一个标准是不言而喻的。

对于第二个部分,这部分会找到所有的蛇名:

INDEX(D2:E3,0,MATCH("snake",D1:E1,0))

....因为它与 D1:E1 中的标题匹配“snake”,并返回下面的整个列[通过在 INDEX 中使用零作为行参数,您可以获得整个列]。

然后,有了所有的蛇名,您就可以使用 MATCH 来匹配 B1:B4 和那些。如果有匹配,你会得到一个数字,如果没有,你会得到 #N/A,所以你将 MATCH 函数包装在 ISNUMBER 中以返回 TRUE/FALSE。

另一种方法是使用 COUNTIF 代替 ISNUMBER/MATCH

=SUMPRODUCT((A1:A4="Bob")*(COUNTIF(INDEX(D2:E3,0, MATCH("snake",D1:E1,0)),B1:B4)>0))

【讨论】:

你们成为 MVP 是有原因的! +1【参考方案2】:

首先,您需要正确设置查找表。无法按原样查找第二张表。先改成如下:

Farm  Cow
Farm  Sheep
Snake Boa
Snake Python

现在您可以使用以下公式查找物品的类型:

=INDEX(Sheet2!A:A,MATCH(B1,Sheet2!B:B,0))

如果您将其添加到原始工作表的 C 列,您将得到:

Bob Boa Snake
Ann Cow Farm
Bob Sheep   Farm
Bob Python  Snake

那么你就可以使用 sumproduct:

=SUMPRODUCT((A1:A4="Bob")*(C1:C4="Snake"))

【讨论】:

您不能真正将 INDEX/MATCH 或 VLOOKUP 与数组公式一起使用(您需要获得与 SUMPRODUCT 一起使用的东西)。您需要使用 OFFSET 来获取数组:=OFFSET(Sheet2!A1,MATCH(B1:B4,Sheet2!B:B,0)-1,0) 但这无济于事,因为您不能在 SUMPRODUCT 中使用该数组公式(您会收到 #VALUE! 错误) 是的,这就是我遇到的问题

以上是关于sumproduct excel 多表的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL 中的加权平均值(如 Excel 的 SUMPRODUCT)

Excel VBA 使用 SUMPRODUCT 和 COUNTIFS - 速度问题

在 Google 表格上工作的 SUMPRODUCT 函数在 Excel 中不起作用

Excel 中 SUMPRODUCT 的问题:尝试计算高于给定阈值的平均减法数

excel 公式?

excel统计非重复项公式=SUMPRODUCT(1/COUNTIF(A1:A1000,A1:A1000)),若数据范围有空值怎么解决?