如何在数组公式中对列内重复项计数并遇非重复项重置
实现指定词汇的连续重复计数(遇非目标值重置)
针对你需要仅对Apple和Pears两个词汇进行连续重复计数,且遇到其他值(包括空单元格)时重置计数的需求,可以使用以下Google Sheets公式:
=ARRAYFORMULA( LET( col, A2:A, targets, {"Apple", "Pears"}, counts, SCAN(0, col, LAMBDA(prev, curr, IF( ISNA(MATCH(curr, targets, 0)), 0, IF(curr=INDEX(col, ROW(curr)-ROW(col)+1), prev+1, 1) ) )), IF(counts=0, "", counts) ) )
公式逻辑说明
- 用
LET定义变量简化公式:col指定要处理的列(示例中为A列,从第2行开始跳过表头),targets设置需要计数的特定词汇。 SCAN函数逐行遍历数据,维护累计计数:- 若当前单元格值不在目标词汇列表中,直接重置计数为0;
- 若当前值和上一行的目标词汇相同,计数在上一次结果基础上加1;
- 若当前值是目标词汇但和上一行不同,计数从1重新开始。
- 最后通过
IF将计数为0的单元格(非目标值或空单元格)替换为空,匹配你需要的结果格式。
原公式问题说明
你之前使用的公式=ArrayFormula(iferror(SORT(ROW(D3:D),SORT(ROW(D3:D),D3:D,1),1)-MATCH(D3:D,SORT(D3:D),0)-ROW()+1))是基于全局匹配的计数,会统计该词汇在整列中出现的总次数顺序,不会因为中间出现其他值而中断计数链,因此无法满足连续计数并重置的需求。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

