将同类数据快速合并到一个单元格
2018-09-29王志军
王志军
同事前来求助,如图1所示,A列是某单位的部门名称,B列是相应员工的姓名,现在要求将相同部门的员工姓名填入F列对应的单元格,不同人名之间以逗号“,”分隔。由于实际的数据量非常大,手工操作显然是相当麻烦,有没有简单一些的实现方法呢?
我们可以借助辅助列解决这一问题,选择C2单元格,在编辑栏输入公式“=IF(A2=A1,C1&”,”&B2;,B2)”,这里首先判断A2和A1的值是否相等,如果相等则返回“C1&”,”&B2;”的結果,否则返回B2。公式执行之后向下拖拽或双击填充柄,公式向下复制填充的过程中,该公式得到的结果将会被公式所在单元格下方的下一个公式所使用,于是形成人名累加的效果,很快就可以看到图2所示的效果。
选择F2单元格,在编辑栏输入公式“=LOOKUP(1,0/fE2=$A$2:$A$9),C$2:C$9)”,这里的LOOKUP函数忽略错误值,总是取得最后一个符合条件的结果,该公式以“0/(E2=$A$2:$A$9)”构建了一个由0和错误值#DIV/0!组成的内存数组,再使用大于0的1作为查找值,于是得出最后一个满足部门等于E2的C列结果,即A列最后一个行政办所对应的C列值C2,公式执行之后向下拖拽或双击填充柄,最终效果如图3所示。
如果你使用的Excel是最新的2016或365的版本,那么也可以不使用辅助列,直接使用公式“=TEXTJON(”,”,1,IF($A$2:$A$10=E2,B$2:B$10,""))”。公式中需要合并的内容为“IF($A$2:$A$IO=E2,B$2:B$10,"")”,也就是说如果等于E2,则返回对应的内容,否则返回空文本"";TEXTJOIN函数的用法为“=TEXTJOIN(间隔字符,是否忽略空单元格,要合并的内容)”,这里是对IF函数得到的内存数组进行合并,合并时使用逗号“,”进行分隔,最终效果完全相同。