如何用QUERY函数实现Excel(Google Drive)多列范围匹配统计行数?
简化Google Sheets多列匹配的行数统计
问题背景
你需要统计A列中,对应行的K:Z任意一列包含A2指定字符串的总行数,原QUERY函数需逐个列写OR条件,写法繁琐,以下是两种简化方案:
方案1:使用BYROW+SUMPRODUCT(精准匹配)
公式:
=SUMPRODUCT(--(BYROW(K:Z,LAMBDA(row, MAX(BYCOL(row, LAMBDA(cell, IF(ISNUMBER(SEARCH(A2, cell)), 1, 0))))>0)))
更简洁的版本:
=SUMPRODUCT(--(BYROW(K:Z,LAMBDA(row, BYCOL(row, LAMBDA(cell, COUNTIF(cell, "*"&A2&"*")))>0))))
- 逻辑说明:
BYROW(K:Z, ...)遍历K到Z的每一行- 内层
BYCOL(row, ...)检查当前行的每个单元格是否包含A2的字符串(COUNTIF用通配符*匹配任意前后内容) >0判断当前行是否存在匹配的单元格,返回TRUE/FALSE--将布尔值转为1/0,SUMPRODUCT求和得到总行数
方案2:使用QUERY+TEXTJOIN(适配原用法)
如果习惯用QUERY函数,可通过合并列内容简化条件:
=QUERY(A:Z,"SELECT COUNT(A) WHERE TEXTJOIN(' ',TRUE,K:Z) CONTAINS '"&SUBSTITUTE(A2,"'","''")&"'",0)
- 逻辑说明:
TEXTJOIN(' ',TRUE,K:Z)将当前行K到Z的非空单元格用空格拼接成单个字符串- 直接判断拼接后的字符串是否包含A2内容,无需逐个列写OR条件
SUBSTITUTE(A2,"'","''")处理A2中包含单引号的情况,避免QUERY语法报错
内容的提问来源于stack exchange,提问作者alvarohdf
相关产品推荐
相关产品推荐

