首页 > 解决方案 > 如果列的对应部分不为空,则按列计数

问题描述

如果下面的 6 个单元格不为空,我如何计算前 3 行中非空单元格的数量。

因此,对于下面的示例,只有 column 中的 xADE3 行应该是计数,因为它们在底部下方有非空单元格。

目前我只是添加每一列的结果

=IF(COUNTIF(A4:A10,"<>"&"")>0,COUNTIF(A1:A3,"<>"&""))+IF(COUNTIF(B4:B10,"<>"&"")>0,COUNTIF(B1:B3,"<>"&""))+...

在此处输入图像描述

标签: excel-formula

解决方案


我找到了一个基于这个答案的解决方案。如果您觉得这篇文章有帮助,请务必尊重@Chronocidal 的回答。

在此处输入图像描述

对于上半部分的总和,ARRAY 公式 -> CTRL + SHIFT + ENTER为:

=SUM(
     (MMULT(TRANSPOSE(--(ROW(A1:A3)>0)); (--(A1:E3<>""))))
    *(MMULT(TRANSPOSE(--(ROW(A4:A9)>0)); (--(A4:E9<>"")))>0)
)

ROW-functions 需要跨越的行数与相应的计数数组的行数一样多。然后3x1-rowarray 将TRANSPOSEd获取到 -array 1x3。使用-array3x5我们得到一个1x5-countarray。所以[3x1]*[3x5]被转置给[1x3]*[3x5]=[1x5]

对于底部的总和,ARRAY 公式 -> CTRL + SHIFT + ENTER是:

=SUM(
     (MMULT(TRANSPOSE(--(ROW(A1:A3)>0)); (--(A1:E3<>"")))>0)
    *(MMULT(TRANSPOSE(--(ROW(A4:A9)>0)); (--(A4:E9<>""))))
)

推荐阅读