谷歌表格ARRAYFORMULA实现序列计数问题求助
谷歌表格用ARRAYFORMULA实现按值序列计数
你当前用的=ARRAYFORMULA(IF(I$1:I<>"", COUNTIF(I$1:I1, I1:I), ""))无效,是因为数组运算中I$1:I1不会像手动拖拽那样逐行扩展统计范围,而是固定为第一行的区间,无法实现累计计数。
要复现手动拖拽COUNTIF的效果,可使用以下两种ARRAYFORMULA兼容的公式:
方法一:COUNTIFS+ROW限定范围
=ARRAYFORMULA(IF(A:A="","",COUNTIFS(A:A,A:A,ROW(A:A),"<="&ROW(A:A))))
原理:通过ROW(A:A)<=ROW(A:A)为每行设置动态统计范围(仅统计当前行及以上的单元格),结合COUNTIFS匹配当前单元格的值,实现逐行累计计数。
方法二:BYROW+INDIRECT动态引用
=ARRAYFORMULA(IF(A:A="","",BYROW(A:A,LAMBDA(x,COUNTIF(INDIRECT("A1:A"&ROW()),x)))))
原理:用BYROW遍历A列每个单元格,通过INDIRECT("A1:A"&ROW())生成当前行及以上的动态区间,再用COUNTIF统计当前值的出现次数。
这两个公式都能自动适配A列新增的内容,无需手动拖拽,完全复现C列的预期结果。
内容的提问来源于stack exchange,提问作者mj mj
相关产品推荐
相关产品推荐

