我正在尝试生成Excel表中不同字符串出现次数的计数。目前在SHEET1中的示例表将是:
我在另一个电子表格中有另一个表格,我想在表1中左侧的每个字母表示,右边是“za”,“zc”或“zd”的条目数。但是,我只想考虑每个条目的一个条目。
最终结果,在SHEET2的B行,必须是这样的:
目前我正在使用SUM
和COUNTIFS
的组合来完成这项工作。
更具体地说,应用于该示例,我使用以下公式:
=SUM(COUNTIFS(Sheet1!A1:A18,Sheet2!$A1,Sheet1!B1:B18,{"za","zc","zd"}))
该公式正在做一些预期的事情。但是,它并不仅仅计算每个条目一次。相反,它为左边的每个字母计算“za”,“zc”或“zd”的每个条目。公式返回的表格如下:
如何更改公式以使其符合我的意图?
谢谢。
答案 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)