如何在Google Sheet中筛选出分组表中不存在的未分组名称?
筛选Google Sheets中仅存在于Sheet2的名称
直接用以下两种公式就能实现需求,选一个复制到你要输出结果的单元格即可:
方案1:使用FILTER+ISNA+MATCH组合(推荐,逻辑直观)
=FILTER(Sheet2!A:A, ISNA(MATCH(Sheet2!A:A, Sheet1!A:A, 0)), Sheet2!A:A<>"")
- 原理:
MATCH查找Sheet2每个名称在Sheet1的位置,找不到就返回#N/A;ISNA把这些找不到的标记为TRUE;FILTER最终筛选出这些非空的名称。
如果遇到名称带前后空格导致匹配失败的情况,加TRIM处理空格:
=FILTER(Sheet2!A:A, ISNA(MATCH(TRIM(Sheet2!A:A), TRIM(Sheet1!A:A), 0)), TRIM(Sheet2!A:A)<>"")
方案2:使用QUERY函数(适合熟悉SQL逻辑的用户)
=QUERY(Sheet2!A:A, "SELECT A WHERE A IS NOT NULL AND NOT A MATCHES '"&TEXTJOIN("|", TRUE, Sheet1!A:A)&"'", 0)
- 原理:先把Sheet1的所有名称用
TEXTJOIN拼接成正则匹配串,再用QUERY筛选Sheet2中非空且不匹配该串的内容,最后一个参数0表示Sheet2没有表头(如果有表头就改成1)。
同样,处理空格的修改版:
=QUERY(Sheet2!A:A, "SELECT A WHERE TRIM(A) IS NOT NULL AND NOT TRIM(A) MATCHES '"&TEXTJOIN("|", TRUE, ARRAYFORMULA(TRIM(Sheet1!A:A)))&"'", 0)
内容的提问来源于stack exchange,提问作者nzrr
相关产品推荐
相关产品推荐

