如何在Google Sheets中按E、G列匹配去重并生成单列结果
问题分析与解决方案
你遇到的两个问题根源如下:
- 公式生成3列:因为原公式的LAMBDA返回的是包含3个元素的数组
{ax,JOIN(...),XLOOKUP(...)},BYROW会基于这个数组生成3列结果; - 未实现去重:原公式仅对E列取唯一值,但未先过滤掉E列中不在G列的无效数据,同时也没对最终输出内容做全局去重。
以下是两种匹配需求的单列去重方案:
方案1:提取符合条件的F列去重值(单列)
如果需要E列值存在于G列时,对应的F列所有值去重后单列展示,使用公式:
=UNIQUE(FILTER(F1:F14,COUNTIF(G1:G14,E1:E14)>0))
- 逻辑:先用
FILTER筛选出E列值在G列中存在的对应F列数据,再用UNIQUE去除重复值,直接返回单列结果。
方案2:合并匹配内容为单列去重结果
如果需要将匹配的E值、对应去重后的F列合并值、匹配的G值合并为单个单元格内容,且最终单列去重,使用公式:
=UNIQUE(BYROW(UNIQUE(FILTER(E1:E14,COUNTIF(G1:G14,E1:E14)>0)),LAMBDA(ax,TEXTJOIN(",",,ax,JOIN(",",UNIQUE(FILTER(F1:F14,E1:E14=ax))),XLOOKUP(ax,G1:G14,G1:G14)))))
- 逻辑:
- 先筛选出E列中存在于G列的唯一值,排除无效数据;
- 对每个符合条件的E值,用
TEXTJOIN将E值、去重后的对应F列合并值、匹配的G值合并为单个字符串; - 最后用
UNIQUE对合并后的所有内容做全局去重,返回单列结果。
内容的提问来源于stack exchange,提问作者Amirali Shabani
相关产品推荐
相关产品推荐

