Google Sheets多关键词无序全匹配筛选公式需求
解决方案
直接使用以下适配葡萄牙语格式(参数用分号分隔)的公式:
=FILTER(products!A:Z; BYROW(products!D:D; LAMBDA(row; COUNTA(SPLIT(C2; " "))=SUMPRODUCT(--ISNUMBER(SEARCH(SPLIT(C2; " "); row))))))
公式逻辑拆解
SPLIT(C2; " "):将C2单元格的输入按空格拆分为关键词数组(若关键词用其他分隔符,比如逗号,替换这里的" "为", "即可)SEARCH(SPLIT(C2; " "); row):针对products表中每一行的产品描述(row),检查每个关键词是否存在,存在则返回匹配位置,不存在返回错误值ISNUMBER(...):将匹配结果转换为布尔值(存在=TRUE,不存在=FALSE)--(...):把布尔值转为数字1(TRUE)或0(FALSE)SUMPRODUCT(...):对当前行的匹配数字求和,得到匹配成功的关键词数量COUNTA(SPLIT(C2; " ")):计算输入的总关键词数量BYROW(...):遍历products!D:D的每一行,返回“匹配数等于总关键词数”的布尔值,FILTER仅保留返回TRUE的行
扩展:忽略大小写匹配
如果需要忽略关键词和描述的大小写差异,改用REGEXMATCH替代SEARCH,公式如下:
=FILTER(products!A:Z; BYROW(products!D:D; LAMBDA(row; COUNTA(SPLIT(C2; " "))=SUMPRODUCT(--REGEXMATCH(row; "(?i)"&SPLIT(C2; " "))))))
内容的提问来源于stack exchange,提问作者Foroand
相关产品推荐
相关产品推荐

