今天一位同学提了一个问题,如果用一般的解题思路还真的有些麻烦。不过使用Excel的“倒减法”却可以轻松解决。
【例】如下图所示。要求在B列计算连续的符合条件(>3)的数字个数。
分析:
根据条件计算,我们用countif可以轻松解决,如:
=Countif(a:a,">3")
但本题的难点在于要分段统计,本段的区域大小很难确定。
=Countif(?,">3")
本题借用lookup也可以计算出来,但比较麻烦
B2公式:
=IF(OR(A2<=3,A3>3),"",IFERROR(ROW()-LOOKUP(1,0/(A$2:A2<3),ROW(A$2:A2)),ROW()-1))
如果用倒减法,公式将变得简单很多:
=IF(OR(A2<=3,A3>3),"",COUNTIF(A$2:A2,">3")-SUM(B$1:B1))
公式说明:
IF(OR(A2<=3,A3>3),"":如果A列当前行<=3或下一行大于3,则公式返回空。
COUNTIF(A$2:A2,">3")-SUM(B$1:B2):利用COUNTIF函数统计A列当前行以前共有多少个大于3的数字,然后减去B列已有结果。这里一定要注意区域的引用方式。
补充:所谓倒减法,就是利用本列公式已计算的结果进行倒推的算法。是excel公式设置时很常用的一种公式算法,希望同学们能熟练掌握。