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

如何将Google Sheets中的FILTER+COUNTA()转换为ARRAYFORMULA?

问题

现有公式=if(A3="","", COUNTA(filter(D:D,regexmatch(LOWER(D:D), LOWER(A3)))))可正常逐行计算D列中匹配A3单元格内容的条目数,但将其改为数组公式=ARRAYFORMULA(if(A3:A="","", COUNTA(filter(D:D,regexmatch(LOWER(D:D), LOWER(A3:A))))))后,仅在公式所在单元格返回总计值,无法实现A列每行对应的匹配计数。

解决方案

可以使用MMULT函数替代FILTER+COUNTA的组合,实现数组批量计算:

=ARRAYFORMULA(IF(A3:A="", "", MMULT(--REGEXMATCH(LOWER(D:D), LOWER(A3:A)), SEQUENCE(ROWS(D:D), 1, 1, 0))))

原理说明

  • REGEXMATCH(LOWER(D:D), LOWER(A3:A))生成二维数组,记录D列每个单元格与A列每个单元格的匹配结果(TRUE/FALSE)
  • --将布尔值转换为1/0,便于数值求和计算
  • MMULT通过矩阵乘法对每行的1/0求和,得到A列每个值在D列中的匹配次数
  • SEQUENCE(ROWS(D:D), 1, 1, 0)生成列向量,作为矩阵乘法的右乘数,实现逐行求和

另一种简洁写法(利用BYROW实现数组批量计算):

=ARRAYFORMULA(IF(A3:A="", "", BYROW(A3:A, LAMBDA(x, COUNTA(FILTER(D:D, REGEXMATCH(LOWER(D:D), LOWER(x))))))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:48:14