APP下载

将同类数据合并到一个单元格

2020-06-22王志军

电脑知识与技术·经验技巧 2020年5期
关键词:数组逗号单元格

王志军

中国式表格有时会有一些比较特殊的需求,如图1所示,A列是单位的部门名称,B列是人员姓名,现在需要根据E列的部门名称,将符合条件的部门人员全部放到F列的一个单元格内,不同姓名之间使用逗号间隔。

如果数据不是太多,手工复制、粘贴就可以了,但往往实际的数据量非常大,而且经常需要增加或减少人员,这就需要好好规划了。下面介绍两种不同版本的解决思路。

一、Excel 2019/365版本

我们可以借助TEXTJOIN函数完成上述任务,这个函数的语法如下:

=TEXTJOIN(间隔符号,要不要忽略空单元格,要合并的内容)

选择F2单元格,在编辑栏输入公式“=TEXTJOIN(",",1,IF(A$2:A$13=E2,B$2:B$13,""))”。需要合并的内容为“IF(A$2:A$13=E2,B$2:B$13,"")”,也就是说如果A$2:A$13等于E2,那么就返回B$2:B$13对应的内容,否则返回空文本"";第一参数指定使用的间隔符号为逗号;第二参数为1,表示忽略内存数组中的空文本。按下“Ctrl+Shift+Enter”组合键转换为数组公式,按下回车键,向下拖曳或双击填充柄,就可以看到如图2所示的合并结果。

需要提醒的是,WPS 2019也可以使用这个函数。

二、Excel低版本

如果使用的Excel或WPS不符合上面的版本條件,那么可以借助辅助列和传统函数解决这一问题。

首先对数据区域按照部门进行排序,选择C列作为辅助列,在C2单元格输入公式:=IF(A2=A1,C1&","&B2,B2)。这里首先判断A2和A1的值是否相等,如果相等,则返回C1&","&B2,如果不等,则返回B2。在公式向下复制填充的过程中,该公式得出的结果,将被公式所在单元格下方的下一个公式所使用,于是形成人名累加的效果。执行公式之后向下复制填充,效果如图3所示。

在F2单元格输入公式:=LOOKUP(1,0/(E2=$A$2:$A$13),C$2:C$13)。这里以0/(E2=$A$2:$A$13)构建了一个由0和错误值#DIV/0!组成的内存数组,再用永远大于0的1作为查找值,于是查找出最后一个满足部门等于E2的C列结果,即A列最后一个“办公室”所对应的C列值。执行公式之后向下复制填充,可以得到如图4所示的最终结果。

补充:如果需要将一个单元格的姓名按部门分拆出来,可以借助Power Query的逆透视功能实现。

猜你喜欢

数组逗号单元格
JAVA稀疏矩阵算法
合并单元格 公式巧录入
流水账分类统计巧实现
逗号
JAVA玩转数学之二维数组排序
玩转方格
玩转方格
更高效用好 Excel的数组公式
逗号里的奥秘
自傲的逗号