使用ArrayFormula()对列标题与行值匹配的非空白进行计数的最佳方法是什么?

时间:2018-11-05 19:49:31

标签: excel google-sheets

我要尝试的是计算数据集中行标题与数组匹配的空白单元格的数量。

=countifs(D1:AZ,D2:AZ,D1:1,A2)

但是,由于数组大小不同,因此似乎无法将其用作查找。 enter image description here

理想情况下,我可以得到一个数组公式来计算与A2:A中每个日期相对应的非空白单元格的数量,如下所示: enter image description here

COUNTIFS的文档,我看不到它无法处理垂直和水平匹配。

此外,我需要避免使用= query(),因为D1:1中可能存在实例,其中缺少日期。我将使用iferror()处理该问题。

任何人都能提供的帮助/建议将不胜感激!

我在这里做了一个editable copy of the dataset供参考。

谢谢

2 个答案:

答案 0 :(得分:3)

尝试一下。它是一个矩阵乘法公式,用于汇总每一列的非空白单元格。它应该为您工作。

= arrayformula(mmult(transpose(if(D1:1 =“”,0,if(isblank(D2:BG),0,1))),sign(ROW(D2:BG))))

如果您有兴趣,我可以解释一下。

编辑:怎么样?它添加了一个vlookup。 = arrayformula(iferror(vlookup(A2:A,{transpose(D1:1),mmult(transpose(if(D1:1 =“”,0,if(isblank(D2:BF),0,1)))), sign(ROW(D2:BF))}},2,false)))

答案 1 :(得分:1)

这可能是在B2上实现此目标的一种方法:

=COUNTIFS(OFFSET($D$2:$D,,MATCH(A2,$D$1:$AZ$1,0)-1),">0")

然后您自动填写,提示是:

  • MATCH(A2,$D$1:$AZ$1,0)将A列上的每个日期与第1行上的日期匹配,并返回索引(从1到N)。
  • OFFSET($D$2:$D,,N)将采用范围D2:D和偏移N列(在这种情况下为MATCH的输出)。
  • 最后COUNTIFS将在标题与左侧日期匹配的列中寻找>0值。

我希望对您有帮助