我正在研究一种计算数据列中零个数的方法,即使数据已被筛选。我找到了以下解决方案:
=SUMPRODUCT(SUBTOTAL(3,OFFSET(B2:B18,ROW(B2:B18)-MIN(ROW(B2:B18)),,1)),ISNUMBER(SEARCH("Pear",B2:B18))+0)
其中,B2:B18是数据的总列表,"Pear"是正在计数的标准。
B2:B18
"Pear"
mhd8tkvw1#
我能够确定:
SUBTOTAL(3,OFFSET(B2:B18,ROW(B2:B18)-MIN(ROW(B2:B18)),,1))
用于返回一个数组,该数组中的单元格在区域中可见但隐藏。对于可见,返回1;对于隐藏,返回0。
ISNUMBER(SEARCH("Pear",B2:B18))+0)
用于返回包含"Pear"的单元格的数组。如果找到“Pear”,则返回1,否则返回0。
SUMPRODUCT(arrayofvisiblecells , arrayofcellswithPear)
用于计算单元格可见且出现“Pear”的所有时间的总和。1*1,否则将乘以0。
1*1
0
cgfeq70w2#
在Office 365中,我们最终可以通过使用BYROW来摆脱易失性OFFSET:
=SUMPRODUCT(BYROW(B2:B18,LAMBDA(a,SUBTOTAL(3,a))),ISNUMBER(SEARCH("Pear",B2:B18))+0)
BYROW(B2:B18,LAMBDA(a,SUBTOTAL(3,a)))的功能与SUBTOTAL(3,OFFSET(B2:B18,ROW(B2:B18)-MIN(ROW(B2:B18)),,1))相同,但不是易失性的。
BYROW(B2:B18,LAMBDA(a,SUBTOTAL(3,a)))
bxpogfeg3#
=和积(小计(3,偏移(工作表1!$A$1:$A$1006,行(工作表1!$A$1:$A$1006)-最小值(行(工作表1!$A$1:$A$1006)),,1)),ISNUMBER(搜索(B861,工作表1!$A$1:$A$1006))+0)B861是您所引用的任何细胞。
3条答案
按热度按时间mhd8tkvw1#
我能够确定:
用于返回一个数组,该数组中的单元格在区域中可见但隐藏。对于可见,返回1;对于隐藏,返回0。
用于返回包含
"Pear"
的单元格的数组。如果找到“Pear”,则返回1,否则返回0。用于计算单元格可见且出现“Pear”的所有时间的总和。
1*1
,否则将乘以0
。cgfeq70w2#
在Office 365中,我们最终可以通过使用BYROW来摆脱易失性OFFSET:
BYROW(B2:B18,LAMBDA(a,SUBTOTAL(3,a)))
的功能与SUBTOTAL(3,OFFSET(B2:B18,ROW(B2:B18)-MIN(ROW(B2:B18)),,1))
相同,但不是易失性的。bxpogfeg3#
=和积(小计(3,偏移(工作表1!$A$1:$A$1006,行(工作表1!$A$1:$A$1006)-最小值(行(工作表1!$A$1:$A$1006)),,1)),ISNUMBER(搜索(B861,工作表1!$A$1:$A$1006))+0)
B861是您所引用的任何细胞。