Google Sheets支持不同行数区分大小写的FILTER ISNA MATCH实现方案
Google Sheets 区分大小写跨表筛选不匹配值方案
报错与逻辑错误原因
原有FILTER+ISNA+MATCH组合默认不区分大小写,无法满足大小写敏感的匹配需求,自行调整公式时出现的两类问题原因如下:
- 范围不匹配报错:FILTER函数要求判断条件的数组尺寸,必须和第一参数待筛选范围的尺寸完全一致。直接将10行的Registered表A列作为
REGEXMATCH/EXACT的第一参数,和6行的待筛选News表A列尺寸不符,必然触发报错。 - 子串误判:
REGEXMATCH为子串匹配逻辑,只要搜索词是目标文本的子串就会判定为匹配,因此Barcelona会被误判为和Barcelona B匹配。
可用公式
直接在News表B1单元格输入以下公式即可,无需手动对齐两个表的行数:
=FILTER(A1:A, MAP(A1:A, LAMBDA(item, NOT(SUMPRODUCT(--EXACT(Registered!A:A, item))))))
逻辑说明
MAP函数逐行遍历News表A列的待筛选值,生成的判断结果数组长度和待筛选范围完全一致,从根源上避免尺寸不匹配问题。- 遍历过程中对每个值
item,使用EXACT和Registered表A列的所有值做对比:EXACT是严格区分大小写的整值匹配函数,只有两个字符串的字符、大小写完全一致时才返回TRUE,不会出现子串误判。 --EXACT(...)将布尔值结果转换为1(匹配)/0(不匹配)的数值,SUMPRODUCT对结果求和:如果求和结果大于0,说明Registered表存在完全匹配的项,经NOT()取反后返回FALSE,对应行被FILTER过滤;如果求和结果为0,说明不存在匹配项,取反后返回TRUE,对应行保留。
结果验证
基于给出的测试数据,公式最终返回结果为:
Arsenal De Sarandi Barcelona
符合预期:大小写存在差异的Arsenal De Sarandi、内容不完全一致的Barcelona被保留,内容和大小写完全匹配的Palmeiras、Vasco、Flamengo、Goiás被过滤。
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

