Excel - 在列中查找相同的值并在同一行的范围内执行 COUNTA

Excel - 在列中查找相同的值并在同一行的范围内执行 COUNTA

我想在一列中找到所有相同的名称,然后针对同一行中的单元格范围对该名称的每个实例执行 COUNTA。

我尝试过使用 IF,但它不接受 COUNTA。

如果有必要,我很乐意重新组织表格并分步进行。如果需要,我可以做一些 VBA 就好了。

答案1

您正在寻找扩展的 COUNTAIF(范围、条件、[计数范围]),类似于 SUMIF。不幸的是,它不存在,所以我们必须创建它!

假设列 A 包含姓名,列 B 是您想要计算的值(如果不为空),用于 A 中每组姓名。我假设您有 1000 行,包括第 1 行中的标题。在列 C 中创建:

=NOT(ISBLANK(B2:B1000))+0

然后在 D 栏:

=SUMIF($A$2:$A$1000, A2, $C$2:$C$1000)

编辑:一体化解决方案:如果您想在没有辅助列的情况下执行此操作,请尝试以下数组公式(使用 ctrl+shift+enter(CSE)键入并提交)。

=SUM(BITAND(($A$2:$A$1000=A2),NOT(ISBLANK($B$2:$B$1000)))+0)

您需要使用 CSE 来告诉 Excel 将公式参数视为数组,而不仅仅是标量单单元格数字。普通 AND 不适用于数组,因此 BITAND 是您的好朋友。BITAND 的参数会评估您的条件并生成两个布尔数组,这两个数组逐行进行 AND 运算。“+0”将生成的布尔数组转换为仅包含 0 和 1 的数字数组,这些数字可以相加得到单个标量值。

答案2

不确定我的理解是否正确,请尝试这个公式:

=SUMPRODUCT(($B$2:$E$8<>0)*($A$2:$A$8=A2))

在此处输入图片描述

相关内容