Excel:TEXTJOIN搭配XLOOKUP多匹配值拼接出错求助
问题分析与解决方法
错误原因
XLOOKUP 默认只会返回第一个匹配到的结果,你在公式里连续调用两次XLOOKUP,本质只是重复获取同一个Name值,根本没提取到所有符合ID的匹配项,所以只会得到重复的单值。
解决方法
方法1:FILTER + TEXTJOIN(推荐,适用于Excel 365/2021及以上版本)
用FILTER筛选出当前ID对应的所有Name,再通过TEXTJOIN拼接:
=TEXTJOIN(" | ", TRUE, FILTER(Sheet1[Name], Sheet1[ID] = [@[ID]], ""))
FILTER负责提取Sheet1中所有与当前ID匹配的Name,返回一个结果数组TEXTJOIN会自动遍历这个数组,用|分隔拼接,TRUE参数会自动忽略空值
方法2:XLOOKUP 数组模式(适用于Excel 365/2021及以上版本)
如果一定要用XLOOKUP,修改最后一个参数让它返回所有匹配项:
=TEXTJOIN(" | ", TRUE, XLOOKUP([@[ID]], Sheet1[ID], Sheet1[Name], "", 0, 1))
最后一个参数1表示返回所有匹配结果(默认是仅返回第一个),这样XLOOKUP会输出包含所有对应Name的数组,再由TEXTJOIN完成拼接。
方法3:兼容旧版Excel(无动态数组功能)
如果用的是没有动态数组的旧版Excel,需要输入数组公式(输入完成后按Ctrl+Shift+Enter确认):
=TEXTJOIN(" | ", TRUE, IF(Sheet1[ID] = [@[ID]], Sheet1[Name], ""))
注意:旧版Excel中TEXTJOIN仅在2019及以上版本可用,若版本更早,可能需要借助辅助列+PHONETIC函数,但对非文本格式内容支持有限。
内容的提问来源于stack exchange,提问作者EA Bubnoff
相关产品推荐
相关产品推荐

