Excel:根据另一个值计算一个值在两列中出现的次数

Excel:根据另一个值计算一个值在两列中出现的次数

我正在尝试编写一个 sumproduct 公式,该公式基于另一列中的另一个值来计算一个值在两列中出现的次数。例如:

我正在尝试评估 G 先生在两个学期内有多少名明星学生。我们可以看到,G 先生在两个学期内曾有 3 名学生是明星学生。但是,如果不重复计算 Bob 两次,我就无法得出 3 个。

感谢任何帮助。谢谢。

答案1

您可以使用以下公式:

=LET(d,FILTER($B$2:$C$5,($D$2:$D$5=B$7)+($E$2:$E$5=B$7))=$A8,SUM(N((INDEX(d,0,1)+INDEX(d,0,2))>0)))

在此处输入图片描述

  • 筛选 B 列和 C 列,找出教师列与汇总表标题中的值相等的行(例如 G 先生)
  • 将过滤结果与汇总表的行标题(例如 Star)进行比较。这将创建一个填充 TRUE 或 FALSE 的二维数组
  • 将 TRUE/FALSE 数组命名为“d”
  • 取 d 的第一列并将其添加到 d 的第二列,然后将结果转换为数字数组。这将成为一个一维数字数组,其数字要么为 0,要么大于 0。大于 0 的行表示已找到教师和学生班级的“匹配”。
  • 检查此一维数组中是否有大于零的行。这将创建一个 TRUE/FALSE 数组。
  • 将此数组相加以获得所需结果

注意:如果您无权访问 LET,您可以改用这个:

=SUM(N((INDEX(FILTER($B$2:$C$5,($D$2:$D$5=B$7)+($E$2:$E$5=B$7))=$A14,0,1)+INDEX(FILTER($B$2:$C$5,($D$2:$D$5=B$7)+($E$2:$E$5=B$7))=$A14,0,2))>0))

相关内容