如果任何列中都有值,则将每行计为1

时间:2018-11-16 14:19:10

标签: excel

我有一张表,数据范围在B2:F74之间,如果该行的任何列都不为空白,我想为每一行计数一次。我找到了一种简单的方法来完成这一行:

 =IFERROR(COUNTIF(B2:F2, "<>" & "")/COUNTIF(B2:F2, "<>" & ""),"")

我知道我可以将其复制到一列中并添加到一起(这是我当前正在使用的),但是我很好奇是否有一种简单的方法可以仅在一个单元格中使用公式来做到这一点。

要做到这一点,很长的路要走:

 =IFERROR(COUNTIF(B2:F2, "<>" & "")/COUNTIF(B2:F2, "<>" & ""),"") + IFERROR(COUNTIF(B3:F3, "<>" & "")/COUNTIF(B3:F3, "<>" & ""),"") + ...

并将其单独添加。我尝试过

 =SUM(IFERROR(COUNTIF(B2:F2, "<>" & "")/COUNTIF(B2:F2, "<>" & ""),""),IFERROR(COUNTIF(B74:F74, "<>" & "")/COUNTIF(B74:F74, "<>" & ""),""))

但是返回“ 1”。

编辑:标题中的固定错字。

2 个答案:

答案 0 :(得分:3)

使用OFFSET创建一个范围为一行的行,并使用SUMPRODUCT对结果进行计数:

=SUMPRODUCT(--(COUNTIF(OFFSET(B1,ROW($1:$73),0,1,5),"<>")>0))

enter image description here

答案 1 :(得分:2)

我更喜欢非易失性数组公式**

=SUM(N(MMULT(N(B2:F74<>""),TRANSPOSE(COLUMN(B2:F74)^0))>0))

致谢

**输入数组公式的方式与使用“标准”公式的方式不同。首先按住CTRL和SHIFT,然后再按Enter,而不是仅按ENTER。如果操作正确,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入大括号)。