Google Sheets公式返回全部结果而非指定结果的求助
Google Sheets 公式修正:精准匹配代码关联结果
问题概述
当前公式会返回所有商品结果,无法仅筛选出与C10中输入的代码(如AC/12345)关联的内容:
原始单元格内容:
#CLIENTCODE#12345_DATE_BARCODE_Bread#67891_DATE_BARCODE_Whine#12345_DATE_BARCODE_Tea
- 输入
AC/12345时,期望返回Bread、Tea,但实际返回全部3个商品- 输入
AC/67891时,期望返回Whine,但实际返回全部3个商品
原公式问题
原公式仅判断单元格是否包含目标代码,一旦单元格中存在目标代码,就会把该单元格内所有商品都提取出来,而非仅匹配目标代码对应的商品。
修正后的公式
=IF(ISBLANK(C10),"No search value", LET( target_code, REGEXEXTRACT(C10,"AC/(.*)"), get_matches, LAMBDA(range, FLATTEN( MAP(FILTER(range, FIND("#"&target_code&"_", range) > 0), LAMBDA(cell, LET( regex_pattern, "#"&target_code&"_DATE_BARCODE_([A-Za-z]+)", matches, REGEXMATCH(cell, regex_pattern), results, REGEXEXTRACT(cell, regex_pattern), FILTER(results, matches) ) ) ) ), lor_results, get_matches(LOR!A:A), lor25_results, get_matches('LOR25'!A:A), combined, TEXTJOIN(", ", TRUE, IFERROR(lor_results), IFERROR(lor25_results)), IF(combined="", "No data found", TRANSPOSE(SPLIT(combined, ", "))) ))
修正说明
- 精准提取目标代码:用
REGEXEXTRACT(C10,"AC/(.*)")直接获取C10中的数字代码部分 - 自定义匹配函数:
get_matches函数负责处理单个数据范围:- 先筛选出包含目标代码的单元格
- 用正则表达式
#目标代码_DATE_BARCODE_([A-Za-z]+)精确匹配代码与商品的对应关系 - 只提取符合条件的商品名称,排除无关结果
- 合并结果:整合两个工作表的结果,空值自动忽略,最终转置输出
内容的提问来源于stack exchange,提问作者Walid Victor
相关产品推荐
相关产品推荐

