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统计非重复项公式=SUMPRODUCT(1/COUNTIF(A1:A1000,A1:A1000)),若数据范围有空值怎么解决?