2

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

例如,我想知道 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
4

2 回答 2

3

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

=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))

于 2013-09-09T09:47:25.413 回答
1

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

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"))
于 2013-09-09T00:22:14.570 回答