跳至主要内容

将符合条件的多个单元格合并


缘起

上周,相关部门要求我们公司填报某表格。该表格大部分和我们公司原有表格一致,只需要复制粘贴就可以。只有某一列资料是需要将我们公司表格中几列数据按照一定条件合并起来。这真是难到我了,最笨的方法当然是人工筛选,然后复制粘贴。不过由于几千行的数据实在太多,因此还是希望有更简便的方法。上网猛搜一顿,终于找到了解决办法。在寻找的过程中,我找到的比较新的资料都是视频,而相关文章用的OFFICE版本实在太老,因此我决定把整个解决方法写成本文。

  • 因为公司资料隐私的问题,我用最近在玩的EU4的省份数据来代替演示。

公司初始表格如下图:

最终要求填写的格式:

参考资料

B站视频:用VLOOKUP函数辅助将乱序数据相同部门的多个姓名合并 

我是看了这个视频最终解决了问题,如果喜欢看视频,直接看视频就好。

软件版本

本文写于2022年4月2日,使用的软件版本为office 365(2203)

最终公式

=B2&IFERROR("/"&VLOOKUP(A2,A3:C30,3,0),"")

知识要点

1.数据引用

本质上,整个解决思路是利用VLOOKUP函数将数据倒序累加的过程。因此,必须首先在单元格C2引用B2「省份」的数据。否则在下一步使用VLOOKUP函数时候,将因为查询不到数据而报错。

=B2

2.VLOOKUP函数的使用

=VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])

按照我自己对该函数的粗浅理解就是:在某个范围内(参数二),去找某某人(参数一),将属于某某人的某某物(参数三)拿回来。参数四一般忽略就好。

  • 注意事项:查找值必须位于返回值的左侧。

在本例中,公式写作为:

=VLOOKUP(A2,A3:C30,3,0)

这里对其用法做了两个小小的变形(这也是我一开始没想明白的地方):

  • 查找范围(参数二)不包括本行。即总是从下行开始查找
  • 查找的某物(参数三)是公式所在列(汇总列)。

以C2单元格来说明:从A3:C30这个范围内(参数二),去找「安得拉」(参数一),将其对应的「汇总」单元格值(参数三),填写到C2单元格。

3.IFERROR函数的使用

=IFERROR(value, value_if_error)

该函数比较简单,第一个参数是需要检查的公式,第二个参数是当出现错误时,需要显示的值。

在这里需要使用的原因是:如果不使用,在某类「区域」列最后一行时,因为往下VLOOKUP函数再也搜寻不到该「区域」数据,而会报错。如下图:

4.和字符「&」的使用

因为最终表格格式要求,汇总的省份之间必须用「/」相隔,因此我们需要使用「&」符。

这样,就得出了开头的最终公式。呈现的效果如下图:

5.去除重复数据

到这里,相较最终表格的要求,我们只差把重复数据去了。因为逆向累加的原因,因此我们实际只需要每个「区域」的第一行。因此将「区域」和「汇总」另外复制一份,全部选中后,选取「数据」选项卡——「删除重复值」——选择「区域」。这样就默认只保留了每个「区域」的第一行。就能得到我们最终想要的格式了。

其他方法

除了这个方法,我还在网上找到了用「VBA」自定义函数的解决方法,不过我看不懂,只能把链接放在下方,留给需要的人。

Excel按条件合并多个单元格的内容到指定单元格内

评论

此博客中的热门博文

WPS 文档中表格内文字回车后格式变化的问题

《欧陆风云 4》勃兰登堡战报

开局设置 1.29.3.0 正版 + 11个资料片。无“第三罗马”、“统治吧,不列颠尼亚”、“达摩”、“黄金世纪” 铁人模式,普通难度,历史幸运