如何在Google Sheets中合并多行列数组中的重复值
嘿,这个需求确实可以用Excel函数搞定,而且我给你准备了两种实用方案,适配不同版本的Excel:
方法1:Excel 365/2021 动态数组解法(最简洁)
如果你用的是支持动态数组的新版本Excel,直接用这个公式就行,不需要复杂的数组操作:
=TEXTJOIN("-",TRUE,IF(ISNUMBER(MATCH(A1:F1,A2:F2,0)),A1:F1,""))
公式拆解:
MATCH(A1:F1,A2:F2,0):逐一检查第一行的每个值在第二行中是否存在,存在返回对应列号,不存在返回错误值ISNUMBER(...):把上面的结果转成布尔值(存在=TRUE,不存在=FALSE)IF(...):只保留第一行中在第二行存在的值,其余留空TEXTJOIN("-",TRUE,...):用-作为分隔符,把所有非空的匹配值连接起来
直接回车就能得到你要的Mice-Frog,是不是很省心?
方法2:兼容旧版Excel(基于INDEX/MATCH的数组公式)
如果你的Excel版本不支持动态数组,那就用INDEX/MATCH配合数组公式来实现:
=TEXTJOIN("-",TRUE,INDEX(A1:F1,,SMALL(IF(ISNUMBER(MATCH(A1:F1,A2:F2,0)),COLUMN(A1:F1)-COLUMN(A1)+1,""),ROW(INDIRECT("1:"&SUMPRODUCT(--ISNUMBER(MATCH(A1:F1,A2:F2,0))))))))
注意:
输入完公式后,**必须按Ctrl+Shift+Enter**触发数组公式(旧版Excel的要求),不能直接回车。
公式拆解:
SUMPRODUCT(--ISNUMBER(MATCH(...))):先统计出两行之间匹配值的数量ROW(INDIRECT("1:"&数量)):生成从1到匹配数量的序列,用来逐个提取匹配值SMALL(IF(...), 序列):提取所有匹配值所在的列号INDEX(A1:F1,,列号):根据列号取出第一行对应的匹配值- 最后用
TEXTJOIN把这些值用-连接起来
如果你的旧版Excel连TEXTJOIN都没有,也可以用&手动拼接,但需要判断匹配项的数量,相对麻烦一点,优先推荐上面的方案。
内容的提问来源于stack exchange,提问作者Jos Medinger
相关产品推荐
相关产品推荐

