如何统计序列最长连续负数段长度?COUNTIFS报错求助
解决Excel中统计最长连续负数段长度的问题
你的公式错误原因
你当前的COUNTIFS公式触发Array arguments to COUNTIFS are of different size错误,核心问题有两个:
indirect("Database!M:M"&ROW()-1)是无效引用写法,就算修正,偏移后的区域行数也会和原整列Database!M:M不一致,而COUNTIFS要求所有条件区域的大小必须完全匹配。"<0"已经包含了非零逻辑(负数不可能等于0),所以"<>0"条件完全多余,属于冗余判断。
解决方案
根据你的Excel版本,推荐两种高效实现方式:
1. Excel 365/2021(支持动态数组)
直接用SCAN+MAX组合公式,无需辅助列:
=MAX(SCAN(0, Database!M:M, LAMBDA(a,b, IF(b<0, a+1, 0))))
逻辑说明:
SCAN从初始值0开始遍历M列所有单元格- 遇到负数时,将累计长度+1;遇到非负数时重置累计长度为0
- 最后用
MAX提取所有累计长度中的最大值,就是最长连续负数段的长度
2. 旧版Excel(无动态数组支持)
方式A:辅助列法(简单易理解)
- 在M列旁新增辅助列(比如N列),在
N2单元格输入公式并下拉填充:
=IF(Database!M2<0, N1+1, 0)
- 用
MAX(Database!N:N)即可得到最长连续负数段的长度
方式B:无辅助列数组公式
输入公式后按Ctrl+Shift+Enter完成数组确认:
=MAX(FREQUENCY(IF(Database!M:M<0, ROW(Database!M:M)), IF(Database!M:M>=0, ROW(Database!M:M))))
逻辑说明:
- 先用
IF分别提取负数行号和非负数行号 FREQUENCY计算每个非负数分隔点之间的负数行号数量,即连续负数的长度- 最后用
MAX取出最大长度值
内容的提问来源于stack exchange,提问作者Rafael Alexandre Sousa
相关产品推荐
相关产品推荐

