如果单元格包含一个或多个单词列表,则对其进行计数

如果单元格包含一个或多个单词列表,则对其进行计数

我有一份电子表格,其中列出了参加我们其中一个家庭作业中心的学生。电子表格列出了学生使用的语言,我想统计学生使用特定语言的实例,如下例所示,其中学生语言列有一个命名范围设置为 registerListLanguage:

学生姓名 学生语言
假名 阿尔巴尼亚语
其他 乌尔都语
学生1 乌尔都语、旁遮普语、意大利语
学生2 旁遮普语
学生 3 乌尔都语和旁遮普语

如果学生只说一种语言(例如阿尔巴尼亚语),这很容易,只需使用简单的 =SUM(COUNTIFS(registerListLanguage, "阿尔巴尼亚语“)

然而,在很多情况下,我们的学生会说两种或两种以上的语言,这意味着我们需要列出他们说的语言(如上例中的学生 1)

我的上级希望我能够报告讲乌尔都语或旁遮普语的学生的情况,而我真的很难得到准确的统计……目前,我使用以下公式:

=SUM(COUNTIFS(registerListLanguage, {"*Urdu*","*Punjabi*"}))

但这是将讲旁遮普语和乌尔都语的学生计算两次,因此上例中的学生 1 和学生 3 被计算了两次......

我整个下午都在努力想办法让它只在包含乌尔都语或旁遮普语的单元格中计算一次......

有人能指出我哪里错了吗?

谢谢!

答案1

您可以减去计算它们都存在的 COUNTIFS:

=SUM(COUNTIFS(B2:B6, {"*Urdu*","*Punjabi*"}))-COUNTIFS(B2:B6,"*Urdu*",B2:B6,"*Punjabi*")

在此处输入图片描述

或者使用 SUMPRODUCT 检查单元格中是否存在且仅将其计为 1 而不是 2:

=SUMPRODUCT(--((ISNUMBER(SEARCH("Urdu",B2:B6)))+(ISNUMBER(SEARCH("Punjabi",B2:B6)))>0))

这将创建两个数组,分别为 1 和 0,然后将它们相加。如果相加数组中的任意一行大于 0,则返回 1。

在此处输入图片描述

相关内容