一勺烩,把同类数据合并到一个单元格

工作中总会有一些奇葩的特殊需求,最让人头疼的莫过于将符合条件的多个结果全部放到一个单元格内,这种汇总方式,就是传说中的“一勺烩”啊。

举个例子,请看下图。

A列是某公司部门名称,B列是人员姓名。
要求将相同部门的人员姓名填入F列对应单元格,不同人名之间以逗号间隔。
看到这里,想必有人在心里嘀咕了:
小子啊,你这数据处理不规范啊,怎么能把这么多人名放一个单元格呢?这是违反数据规律,作死吧……
停停!!——
作为表哥表妹大军中的一员,俺更深知表格数据生杀予夺从不在我,而在于那位老是板着脸的……老板。
言归正传,说说这道题的解法:
首先在C2输入公式
=IF(A2=A1,C1&','&B2,B2)
向下复制填充。
F2输入公式:
=LOOKUP(1,0/(E2=$A$2:$A$9),C$2:C$9)
向下复制填充,得到最终结果。
这个解法使用了辅助列的方式。
C列为辅助列,是一个简单的IF函数。
以C2的公式为例:
=IF(A2=A1,C1&','&B2,B2)
先判断A2和A1的值是否相等,如果相等,则返回C1&','&B2,如果不等,则返回B2。
此处A2和A1的值不相等,因而公式返回B2的值'祝洪忠'。
在公式向下复制填充的过程中,该公式得出的结果,将被公式所在单元格下方的下一个公式所使用,于是形成人名累加的效果。
比如C3单元格公式:
=IF(A3=A2,C2&','&B3,B3)
A3和A2的值相等,返回真值C2&','&B3。
C2为上个公式所返回的结果B2(祝洪忠),B3的值是'星光',所以C3最后结果为'祝洪忠,星光'。
辅助列公式输入完成后,在F列使用了一个常用的LOOKUP函数套路,得到最终结果:
=LOOKUP(1,0/(E2=$A$2:$A$9),C$2:C$9)
LOOKUP的这个套路,忽略错误值,总是取得最后一个符合条件的结果,我们可以总结为:
=LOOKUP(1,0/(条件区域=指定条件),要返回的目标区域)
该公式以0/(E2=$A$2:$A$9)构建了一个由0和错误值#DIV/0!组成的内存数组,再用永远大于0的1作为查找值,于是查找出最后一个满足部门等于E2的C列结果,即A列最后一个广告部所对应的C列值:C2。
如果你使用的是Excel2019或是Office365,那就可以使用TEXTJOIN函数了,这个函数在WPS2019中也有哦。
在F2单元格输入以下公式,按住SHift+Ctrl不放,按回车,OK了。
=TEXTJOIN(',',1,IF(A$2:A$9=E2,B$2:B$9,''))
TEXTJOIN函数的用法为:
=TEXTJOIN(间隔符号,要不要忽略空文本,要合并的内容)
公式中要合并的内容为:
IF(A$2:A$9=E2,B$2:B$9,'')
也就是如果A$2:A$9等于E2,就返回B$2:B$9对应的内容,否则返回空文本'',结果是一个传说中的内存数组:
{'祝洪忠';'星光';'';'';'';'';'';''}
TEXTJOIN函数对IF函数得到的内存数组进行合并,第一参数指定使用间隔符号为逗号,第二参数使用1,表示忽略内存数组中的空文本。
图文作者:看见星光
(0)

相关推荐

  • 矩阵乘积函数mmult进阶应用5:累加求和

    小伙伴们,大家好.今天继续来说mmult的累加应用,这次的题目是按指定次数重复内容.有关这个问题,我们之前也说过很多方法,今天来详细说说mmult的方法. 先来看看数据源和最后的效果.下图左表是数据源 ...

  • 按照各自部门,将姓名合并到一个单元格

    如下图,需要把AB列的数据,按照不同的部门汇总出对应的人员名单. 接下来,怎么以Excel 2016为例,介绍一种快捷简便的方法: 首先在[开发工具]选项卡下,COM加载项,勾选power Pivot ...

  • 如何用公式实现自动填入满足相应条件的数字?

    Q:这是一名知乎网友提出的问题,如下图1所示,在列O中自动填写N班对应的日期. 图1 A:想了半天,没有想到简单的公式.使用数组公式找到N对应的日期数不难,但是如何将找到的多个日期数连在一起却难倒了我 ...

  • 按指定次数重复内容的套路合集

    -套路合集- 按指定次数重复内容 1.vlookup精确查找(4参为0) 如下图所示,B列的是要重复的内容,C列是要重复的次数,最后想要的效果是E列那样.A重复2次,B重复3次...... 首先在A列 ...

  • 没听过LOOKUP函数不要紧,但这些经典用法你一定得会!

    ✎ 大家好,我是雅客. 今天给大家介绍一个LOOKUP函数,这个函数大家可能很少听,大家听的最多的都是VLOOKUP函数,那么这个函数究竟什么来头. 我们下面就来给大家介绍一下. 01 逆向查询 在下 ...

  • VLOOKUP函数不能查找最后一个值,怎么办?

    VLOOKUP函数是使用最多的Excel函数之一,能够查找到第一个值并返回对应的值,然而,如果查找的项有多个,如何查找到最后一个值呢? 举个例子,如下图1所示的数据,要查找"员工15&quo ...

  • Excel公式技巧63:查找最后一行

    excelperfect 在Excel VBA中,可以使用End属性来获取最后一行,例如语句: Range('A' &Rows.Count).End(xlUp).Row 可以获得列A中最后一行 ...

  • 你连0都不懂,老板知道吗?

    最近有好几个学员,公式看起来好像都对,但是实际上结果都出问题.跟着卢子来看看这几个问题,你能否也想到原因? 1.用LOOKUP的经典查找模式填充内容,含有0的没办法转换成上一个单元格的内容. 0跟空单 ...

  • 史上最强文本连接函数textjoin的用法

    我们昨天学了2个文本连接函数,今天来学一个功能更强大的文本连接函数--textjoin.此函数也是新增函数,要office2016版以上才可能有这个函数,它的功能是使用分隔符连接文本字符串区域. -0 ...

  • 多种方法合并同类名单,总有一种适合你!

    大家好,今天要分享的是合并名单的问题.先来看下数据,如下图所示.左表是源数据,是一个班级姓名表,现在要把相同班级的姓名合并在一起,效果如右表所示. 关于这个问题,有很多解决方法.第一种就是用函数tex ...