You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel O365多列数组查找时TEXTJOIN搭配UNIQUE无法去重如何解决

Excel O365多列匹配返回唯一值解决方案

问题原因

原有公式在多列场景下无法去重的核心原因是:
当查找区域为多列时,IF 函数会返回和查找区域维度一致的二维数组(示例中为35行4列结构),UNIQUE 函数默认按行维度做去重判断,不会自动把二维数组的所有值摊平后统一去重,因此达不到预期效果。仅当查找区域为单列时,IF 返回一维数组,UNIQUE 才能正常工作。

可用解决方案

方案1(推荐,O365 2022及以后版本通用)

借助TOCOL函数把二维数组转成一维单列后再去重,公式如下:

=TEXTJOIN(", ",TRUE,UNIQUE(TOCOL(IF('Sheet1'!C$2:F$36=$B2,'Sheet1'!$A$2:$A$36,NA()),2)))

各部分逻辑说明:

  • IF 部分保留原有匹配逻辑,将匹配不到的结果返回NA()而非空文本,方便后续过滤
  • TOCOL(...,2) 负责把二维数组转换为单列,同时自动过滤所有错误值(即匹配失败的NA结果)
  • UNIQUE 对转换后的一维数组做去重处理,可正常输出唯一值
  • 最后由TEXTJOIN按要求用逗号加空格拼接结果,自动忽略空值

方案2(兼容无TOCOL的旧版O365)

如果你的O365版本没有更新TOCOL函数,可以用MMULT做行匹配判断:

=TEXTJOIN(", ",TRUE,UNIQUE(FILTER('Sheet1'!$A$2:$A$36,MMULT(--('Sheet1'!C$2:F$36=$B2),SEQUENCE(COLUMNS('Sheet1'!C$2:F$36),,1,0))>0)))

逻辑说明:

  • MMULT会对每一行的多列匹配结果求和,返回值大于0即代表该行至少有一列匹配到$B2的值
  • FILTER根据求和结果过滤出符合要求的$A列值,再经UNIQUE去重后拼接即可

内容的提问来源于stack exchange,提问作者JLK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:54:04