如何用单单元格公式统计Excel中值小于上方单元格的数量
统计Excel列中值小于上方单元格的数量(无宏/表格方案)
以下提供两种单单元格公式方案,适配不同Excel版本,均无需宏或转换为表格:
方案1:Excel 365/2021及以上(动态数组支持)
使用动态数组函数自动适配任意长度的非空数值列表:
=SUM(--(DROP(FILTER(A:A,A:A<>""),1)<DROP(FILTER(A:A,A:A<>""),-1)))
公式说明:
FILTER(A:A,A:A<>""):提取列A中所有非空的数值单元格,自动排除空行;DROP(...,1):移除过滤后列表的第一个元素,得到从第二个值开始的序列;DROP(...,-1):移除过滤后列表的最后一个元素,得到到倒数第二个值结束的序列;<:逐个比较两个序列的对应元素,判断下一个值是否小于上一个值,返回布尔值数组;--:将布尔值(TRUE/FALSE)转换为数值(1/0);SUM:对转换后的数值数组求和,得到符合条件的数量。
方案2:旧版Excel(无动态数组支持)
需以数组公式形式输入(输入完成后按Ctrl+Shift+Enter确认,公式会自动被大括号包裹):
=SUM(IF(A2:INDEX(A:A,COUNTA(A:A))<A1:INDEX(A:A,COUNTA(A:A)-1),1,0))
公式说明:
COUNTA(A:A):统计列A中非空单元格的总数;INDEX(A:A,COUNTA(A:A)):定位到列A的最后一个非空单元格;A2:INDEX(...):生成从第二个到最后一个非空值的序列;A1:INDEX(...,COUNTA(...)-1):生成从第一个到倒数第二个非空值的序列;IF:判断下一个值是否小于上一个值,符合条件返回1,否则返回0;SUM:对IF返回的数组求和,得到结果。
示例验证:
对于序列1、2、3、5、1、6、5,两种公式均会返回2,对应5→1和6→5两个符合条件的情况。
内容的提问来源于stack exchange,提问作者Mister B
相关产品推荐
相关产品推荐

