COUNTIFS具有唯一值Excel

时间:2017-07-20 21:17:45

标签: excel sum countif

我正在尝试生成Excel表中不同字符串出现次数的计数。目前在SHEET1中的示例表将是:

Example table 1

我在另一个电子表格中有另一个表格,我想在表1中左侧的每个字母表示,右边是“za”,“zc”或“zd”的条目数。但是,我只想考虑每个条目的一个条目。

最终结果,在SHEET2的B行,必须是这样的:

Example Table 2

目前我正在使用SUMCOUNTIFS的组合来完成这项工作。 更具体地说,应用于该示例,我使用以下公式:

=SUM(COUNTIFS(Sheet1!A1:A18,Sheet2!$A1,Sheet1!B1:B18,{"za","zc","zd"}))

该公式正在做一些预期的事情。但是,它并不仅仅计算每个条目一次。相反,它为左边的每个字母计算“za”,“zc”或“zd”的每个条目。公式返回的表格如下:

Example Table 3

如何更改公式以使其符合我的意图?

谢谢。

2 个答案:

答案 0 :(得分:1)

我最初的想法是:

 =SUM(MIN (1,COUNTIFS(Sheet1!A1:A18,Sheet2!$A1,Sheet1!B1:B18,{"za","zc","zd"})) 

但是如果MIN能够正确应用于COUNTIFS结果数组,我就无法测试。 ; - )

EDITED:MIN函数至少占用COUNTIFS数组中的1个或全部项目,而不是最小值1和COUNTIFS数组中的每个项目,这是我所害怕的。使用

=MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"za"),1)+MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"zc"),1)+MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"zd"),1)

将获得理想的结果。它有点笨重,但比数组公式简单。如果需要数组公式,可以使用:

=SUM(FREQUENCY(IFERROR(MATCH({"za","zc","zd"},(IF(Sheet1!$A$1:$A$18=$A5,Sheet1!$B$1:$B$18)),0),""),IFERROR(MATCH({"za","zc","zd"},(IF(Sheet1!$A$1:$A$18=$A5,Sheet1!$B$1:$B$18)),0),"")))

这使用FREQUENCY函数获取一组值,并查看另一组值中有多少项属于每个数据范围。由于您需要文本而不是数字,我们使用MATCH函数来查找列表中第一次出现值,如果不是则返回“”IFERROR函数。 (我们只需要第一次出现,因为您不想知道有多少次出现)。由于它是文本,我们对FREQUENCY的两个参数使用相同的输入。

因此,如果您需要更改要查找的值或搜索范围,请务必更改两者!或者,您可以在某处列出值,例如在F1:F3中,为此创建一个命名范围,另一个为A1:A18,另一个为B1:B18。你的公式看起来像这样:

=SUM(FREQUENCY(IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),""),IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),"")))

然后您只需要更改命名的范围定义,您的公式就会更新。 : - )

注意:由于这是一个数组公式,您必须通过按CTRL + SHIFT + ENTER而不是仅按ENTER关闭单元格。当您查看公式栏时,您应该看到

{=SUM(FREQUENCY(IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),""),IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),"")))}

自己输入花括号是行不通的。 ; - )

答案 1 :(得分:1)

您可以在B1使用此公式并填写:

B1:
=SUMPRODUCT(((Sheet1!$A$1:$A$18=A1)*(Sheet1!$B$1:$B$18= {"za","zc","zd"}))/
  COUNTIFS(Sheet1!$A$1:$A$18,Sheet1!$A$1:$A$18,Sheet1!$B$1:$B$18,Sheet1!$B$1:$B$18))

enter image description here