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

求适配水平数组的Excel动态累计计数公式(替代COUNTIF数组方案)

适配水平数组的Excel动态计数方案

一、连续相同值计数(与原垂直公式逻辑一致)

原垂直公式通过对比当前元素与前一个元素,实现连续相同值的递增计数。适配水平数组时,只需调整数组拼接与偏移的方向,即可得到等长的计数结果:

=LET(
    data, A1:Z1,
    compareArr, data=DROP(HSTACK("", data), , -1),
    SCAN(1, compareArr, LAMBDA(a, b, IF(b, a+1, 1)))
)

逻辑说明:

  • HSTACK("", data):在水平数组左侧添加空单元格,生成列数+1的临时数组
  • DROP(..., , -1):去掉临时数组的最后一列,得到与原水平数组等长的偏移数组(每个位置对应原数组左侧相邻元素)
  • data=...生成布尔数组,标记当前元素与左侧元素是否相等
  • SCAN初始值设为1(第一个元素的计数默认是1),遍历布尔数组:若当前元素与左侧相等则计数+1,否则重置为1

二、累计到当前位置的相同值总数(类似COUNTIF($A1:A1,A1)的数组版)

如果需求是统计从水平数组第一个元素到当前位置,当前值出现的总次数(而非连续计数),可使用以下数组公式:

=LET(
    data, A1:Z1,
    colNum, COLUMNS(data),
    seq, SEQUENCE(1, colNum),
    BYCOL(seq, LAMBDA(x, SUM(--(TAKE(data, x)=INDEX(data, x)))))
)

逻辑说明:

  • SEQUENCE(1, colNum):生成与水平数组列数匹配的位置序列
  • BYCOL遍历每个位置x:用TAKE(data, x)提取从第一列到第x列的子数组,与当前位置的元素INDEX(data, x)比较,转换为数值后求和,得到累计计数

内容的提问来源于stack exchange,提问作者Prodigus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:01:07