具有唯一值Excel的COUNTIFS

我正在尝试生成不同string出现在Excel表中的次数。 目前在SHEET1中的一个例子表格就是这样的:

示例表1

我在另一个电子表格中有另一个表格,我想在表格1左边的每个字母上标明“za”,“zc”或“zd”在右侧出现多less个条目。 不过, 我只想只考虑每一项。

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

示例表2

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

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

该公式正在做一些意图。 但是,一次不计入每个条目。 相反,对于左侧的每个字母,它正在计算“za”,“zc”或“zd”的每个条目。 公式返回的表格如下:

示例表3

我怎样才能改变公式,使之符合我的意图呢?

谢谢。

我最初的想法是:

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

但是我不能在那里testingMIN是否适用于COUNTIFS结果数组。 😉

编辑:MIN函数在COUNTIFS数组中至less取1个或所有项,而不是COUNTIFS数组中的最小值1和每个项,这就是我所害怕的。 运用

 =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函数来获取一组值,并查看另一组值中有多less项属于每个数据范围内。 由于您需要文本而不是数字,所以我们使用MATCH函数来查找列表中第一次出现的值,如果没有,则返回IFERROR函数“”。 (我们只需要第一次出现,因为你不想知道有多less事件)。 既然是文本,我们对FREQUENCY的两个参数使用相同的input。

因此,如果您需要更改要查找的值或您正在search的范围,请务必同时更改! 或者,你可以在F1的某个地方列出这些值,例如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键closures该单元格。 当你看公式栏时,你应该看到

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

它不能自己input大括号。 😉

您可以在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)) 

在这里输入图像说明