求Google Sheets公式:B-AZ列任意匹配值时返回A列对应值
Google Sheets 多列匹配返回对应A列值的解决方案
方案1:使用FILTER+BYROW+COUNTIF(推荐,支持新版Sheets)
直接用以下公式即可实现需求:
=FILTER('Inv by shelf'!A2:A, BYROW('Inv by shelf'!B2:AZ, LAMBDA(row, COUNTIF(row, C1) > 0)))
逻辑说明:
BYROW('Inv by shelf'!B2:AZ, LAMBDA(row, ...))遍历B到AZ列的每一行- 对每行用
COUNTIF(row, C1) > 0判断是否存在等于C1的值,返回TRUE/FALSE的一维数组 FILTER根据这个布尔数组,筛选出A列对应的行
方案2:使用FILTER+MMULT(适配不支持LAMBDA的旧版Sheets)
如果你的Sheets版本不支持LAMBDA函数,可改用:
=FILTER('Inv by shelf'!A2:A, MMULT(--('Inv by shelf'!B2:AZ=C1), SEQUENCE(COLUMNS('Inv by shelf'!B2:AZ),1,1,0))>0)
逻辑说明:
--('Inv by shelf'!B2:AZ=C1)将布尔匹配结果转为1(匹配)或0(不匹配)的二维数组MMULT计算每行的数值总和,大于0则说明该行存在匹配值- 最终通过
FILTER筛选出符合条件的A列内容
原公式无效原因说明
- 第一个QUERY公式:用
TEXTJOIN把B到AZ列所有内容合并成单一字符串,实际是判断C1是否等于这个合并字符串,完全偏离了"任意列匹配"的需求 - 第二个FILTER公式:
'Inv by shelf'!B:AZ = C1生成的是二维布尔数组,而FILTER要求条件数组和A列行数一致的一维数组,维度不匹配导致报错
内容的提问来源于stack exchange,提问作者Ahira
相关产品推荐
相关产品推荐

