对包含数据的范围内的行进行一次计数

Counting Rows Once In Range Which Contain Data

我想找出一个公式来计算一个范围内的每一行,其中包含任何非空的单元格。例如

      Item 1|Item 2|Item 3
Cat 1   X      X      X
Cat 2
Cat 3   X      X      X

      Item 1|Item 2|Item 3
Cat 1   X              
Cat 2
Cat 3                 X

两者都应该 return 2. 我知道我可以使用带有 COUNTIF(Row,"<>") 的辅助列,然后使用 COUNTIF(Column,">0"),但我试图避免这样做,因为它会创建其他问题。有没有办法在一个公式中完成我想要的一切?

取决于Excel的版本:

=SUMPRODUCT(--((B2:B4&C2:C4&D2:D4)<>""))

如果在 ms365 上,请将 SUMPRODUCT() 换成 SUM()

一个显然 长的公式,但是,对于更大的数据范围,更少 time-consuming 构建,因为它不涉及单独选择每一列:

=ROWS(B2:P6)-SUM(INT(MMULT(--ISBLANK(B2:P6),TRANSPOSE(COLUMN(B2:P6)/COLUMN(B2:P6)))/COLUMNS(B2:P6)))

(作为数组公式,它在 Excel 2007 及更高版本中运行,尽管它在 Office 365 中可以缩短很多)