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

Google Sheets:满足相邻列匹配条件的行计数需求

解决方案

需求回顾

之前使用公式:

=sum(byrow(choosecols(A:E,1,3,5),lambda(Σ,ifna(xmatch("a",Σ)^0))))

实现了统计指定列(1、3、5列)至少含一个"a"的行数,同一行内多次出现"a"仅计数一次。

现在需要统计满足以下条件的行数:

  • 指定列(col1、col3、col5)包含字符串"a",且该列相邻右侧列(col2、col4、col6)包含字符串"c"
  • 同一行满足多组条件时,仅计数一次

示例数据

col1col2col3col4col5col6
r1"a""b""c""d""e""a"
r2"a""c""a""d""e""c"
r3"b""a""c""a""d""c"
r4"a""c""a""c""e""d"
r5"e""a""c""d""a""e"

期望结果:2(仅r2、r4符合条件)

公式实现

=SUM(BYROW(A:F, LAMBDA(r, --(MAX((INDEX(r,,{1,3,5})="a")*(INDEX(r,,{2,4,6})="c"))>0))))

公式解释

  1. BYROW(A:F, LAMBDA(r, ...)):逐行遍历A到F列的数据
  2. INDEX(r,,{1,3,5})="a":提取当前行的1、3、5列,判断每个单元格是否等于"a",生成布尔数组
  3. INDEX(r,,{2,4,6})="c":提取当前行的2、4、6列,判断每个单元格是否等于"c",生成布尔数组
  4. 数组相乘:只有对应位置同时满足左列是"a"、右列是"c"时,结果为1,否则为0
  5. MAX(...)>0:检查当前行是否存在至少一组符合条件的列对,存在则返回TRUE
  6. --(...):将布尔值转换为1(符合)或0(不符合)
  7. SUM(...):对所有行的结果求和,得到最终符合条件的总行数

内容的提问来源于stack exchange,提问作者Mr. J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:23:18