You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在数组公式中对列内重复项计数并遇非重复项重置

实现指定词汇的连续重复计数(遇非目标值重置)

针对你需要仅对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:40:09