excel如何计算包含数据的行数?

在Excel中,我试图计算31乘17表中包含数据的行数。 下面的公式可以完成这个工作,但是很麻烦而且没有dynamic的。 有没有办法使用函数或数组公式来改善这个公式?

=SUM(IF(SUM(B3:AF3)>0,1),IF(SUM(B4:AF4)>0,1),IF(SUM(B5:AF5)>0,1),IF(SUM(B6:AF6)>0,1),IF(SUM(B7:AF7)>0,1),IF(SUM(B8:AF8)>0,1),IF(SUM(B9:AF9)>0,1),IF(SUM(B10:AF10)>0,1),IF(SUM(B11:AF11)>0,1),IF(SUM(B12:AF12)>0,1),IF(SUM(B13:AF13)>0,1),IF(SUM(B14:AF14)>0,1),IF(SUM(B15:AF15)>0,1),IF(SUM(B16:AF16)>0,1),IF(SUM(B17:AF17)>0,1),IF(SUM(B18:AF18)>0,1),IF(SUM(B19:AF19)>0,1)) 

我还没有工作的可能答案是DBCOUNTA()和SUMPRODUCT( – (SUMIFS))。

这个问题有三种一般方法。

第一个 – 可以说是最明智的(当然也是最容易理解的)选项是利用现有表中的附加列。 例如,假设我们使用列AG来达到这个目的,我们将在AG3input这个公式:

=COUNT(B3:AF3)>0

并根据需要复制下来。

之后,您的计数通过简单地获得:

=COUNTIF(AG3:AG19,TRUE)

如果无论出于何种原因,您无法(或确实不愿意)使用额外的专栏,则有两个主要的select。

其中第一个可能更直观易懂,虽然受到不稳定因素的影响,

=SUMPRODUCT(0+(SUBTOTAL(2,OFFSET(B3:AF3,ROW(B3:AF19)-MIN(ROW(B3:AF19)),))>0))

替代的,非挥发性的(因此在我看来是更可取的)构造,是以下arrays公式**

=SUM(0+(MMULT(0+(LEN(B3:AF19)>0),TRANSPOSE(COLUMN(B3:AF19)^0))>0))

问候

**数组公式不是以与“标准”公式相同的方式input的。 按住CTRL键和SHIFT键,而不是按下ENTER键,然后按ENTER键。 如果你做得对,你会注意到Excel在公式周围放置了大括号(尽pipe不要试图自己手动插入这些)。

如果您只有17行,请尝试:

 =(COUNTA(1:1)>0)+(COUNTA(2:2)>0)+(COUNTA(3:3)>0)+(COUNTA(4:4)>0)+(COUNTA(5:5)>0)+(COUNTA(6:6)>0)+(COUNTA(7:7)>0)+(COUNTA(8:8)>0)+(COUNTA(9:9)>0)+(COUNTA(10:10)>0)+(COUNTA(11:11)>0)+(COUNTA(12:12)>0)+(COUNTA(13:13)>0)+(COUNTA(14:14)>0)+(COUNTA(15:15)>0)+(COUNTA(16:16)>0)+(COUNTA(17:17)>0)