关于一对多查找的方法,我写过很多种,可以翻看历史记录学习回顾一下。
如果不仅要一对多查找,还要求把同类查找结果列在同一个单元格中,怎么实现呢?我曾经教过大家 Power Query 的方式,过程中需要重新设置 Power Query 的 M 函数,具体可参见 Excel – 如何将同班同学名字汇总到同一个单元格中?。
但是有些同学对于 Power Query 的函数还是比较陌生,希望能通过 Excel 函数来实现这个需求。
那今天就教大家用人人都会的 vlookup 函数来解这道题。
案例:
下图 1 是原始表格,请将同班同学的名字查找出来,汇总在“姓名”列的同一个单元格中,中间用“、”隔开,效果如下图 2 所示。
解决方案:
1. 将 C 列用作辅助列,在 C10 单元格输入公式:
=B10
2. 在 C2 单元格输入以下公式,向下拖动复制公式至 C9 单元格:
=B2&IFERROR("、"&VLOOKUP(A2,A3:$C$10,3,0),"")
公式释义:
- VLOOKUP(A2,A3:$C$10,3,0):这个公式非常巧妙,需要在整列中从下往上理解
- A2:要查找的值,即当前行的班级名
- A3:$C$10:查找区域,请注意以下几点:
- 区域的行自下一行开始,至整个表格的末行
- 起始行是动态的,需要相对引用;而末行是固定不变的,需要绝对引用
- 区域的列包括 C 列本身
- 3:返回值的列号;区域中的第 3 列为 C 列
- 因此,整个 vlookup 函数的用意是:向下查找跟当前行同班的同学姓名
- IFERROR("、"&...,""):如果向下查找到同班同学,则在前面加上“、”号,查不到就显示空值
- B2&...:最后用 & 符号将本行的同学名跟上述结果连接显示在同一个单元格中
3. 最后在 H2 单元格用最基础的 vlookup 函数按班级查找 C 列的值,就得出了结果:
=VLOOKUP(G2,$A$2:$C$10,3,0)
公式释义:
- 由于 vlookup 函数精确查找会返回第一个查找结果,而辅助列 C 中,最完整的学生姓名恰好出现在第一个重复班级名所在的行,所以这里的 vlookup 函数就用最常规用法就可以了
很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。