如何使用VLOOKUP结合ArrayFormula将多个匹配列的查询结果合并至单个列中?
解决方案:将VLOOKUP返回的两列结果合并到单个列
当然可以实现这个需求!你只需要调整现有公式,把VLOOKUP返回的第2列和第3列结果拼接成单个字符串即可。下面提供几种实用的实现方式:
方法1:直接用&拼接(简单高效)
把两次VLOOKUP的结果用&连接,中间可以添加你需要的分隔符(比如空格、逗号等):
=Arrayformula(if(len(A9:A), iferror(VLOOKUP(B9:B, 'Concat Sheet Data'!A9:Q, 2, FALSE)&" "&VLOOKUP(B9:B, 'Concat Sheet Data'!A9:Q, 3, FALSE)),))
- 这里的
" "是分隔符,你可以改成", "、"-"等任意你需要的符号 - 如果某一列结果为空,拼接后会保留另一列的内容
方法2:用INDEX+MATCH避免重复查询(性能更优)
如果你的数据集较大,重复调用VLOOKUP会稍微影响性能,推荐用MATCH定位行号,再用INDEX提取对应列内容后拼接:
=Arrayformula(if(len(A9:A), iferror(INDEX('Concat Sheet Data'!B9:C, MATCH(B9:B, 'Concat Sheet Data'!A9:A, 0), 1)&" "&INDEX('Concat Sheet Data'!B9:C, MATCH(B9:B, 'Concat Sheet Data'!A9:A, 0), 2)),))
MATCH(B9:B, 'Concat Sheet Data'!A9:A, 0)会找到B列值在Concat Sheet Data的A列中匹配的行号INDEX('Concat Sheet Data'!B9:C, 行号, 1)提取第2列(B列)内容,行号,2提取第3列(C列)内容
方法3:用TEXTJOIN自定义合并规则
如果需要更灵活的合并逻辑(比如忽略空值、自定义分隔符),可以用TEXTJOIN函数:
=Arrayformula(if(len(A9:A), iferror(TEXTJOIN(", ", TRUE, VLOOKUP(B9:B, 'Concat Sheet Data'!A9:Q, {2,3}, FALSE))),))
- 第一个参数
", "是你想要的分隔符 - 第二个参数
TRUE表示自动忽略空值(如果某一列没有内容,不会显示多余的分隔符) - 直接传入VLOOKUP返回的
{2,3}列范围,TEXTJOIN会自动把这两列的内容合并成单个字符串
以上三种方法都能满足你的需求,你可以根据自己的实际场景选择最合适的公式~
内容的提问来源于stack exchange,提问作者King Michael King
相关产品推荐
相关产品推荐

