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

时间:2016-06-10 17:09:25

标签: excel multidimensional-array row formula countif

在Excel中,我试图计算包含31 x 17表中数据的行数。以下公式可以完成这项工作,但它既繁琐又不动态。有没有办法使用函数或数组公式改进此公式?

=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))。

2 个答案:

答案 0 :(得分:1)

这个问题有三种常用方法。

第一个 - 也可以说是最明智的(当然也最容易理解) - 选项是在现有表格中使用附加列。例如,假设我们为此目的使用列AG,我们将在AG3

中输入此公式

=COUNT(B3:AF3)>0

并根据需要复制。

之后,您可以通过以下方式获得您的计数:

=COUNTIF(AG3:AG19,TRUE)

如果由于某种原因,您无法(或实际上不愿意)使用其他列,则有两个主要选择。

这些中的第一个可能更直观易懂,尽管它存在易变性,即:

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

替代的,非易失性的(因此在我看来最好)构造,是以下数组公式**

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

此致

**数组公式的输入方式与'标准'相同。公式。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果您已正确完成,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。

答案 1 :(得分:0)

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

$args = array(
  'posts_per_page'=>5,
    'orderby' => 'meta_value',
  'order' => 'DESC',
  'meta_query'      => array(
    'relation'    => 'AND',
    '_post_views' => array(
      'key'     => '_post_views',
      'type'    => 'NUMERIC',
      'compare' => 'LIKE'
    ),
    '_post_like_count'    => array(
      'key'     => '_post_like_count',
      'type'    => 'NUMERIC',
      'compare' => 'LIKE'
    ),
),
);