原来只要变更一下数据源的表结构,就可以将复杂的一对多邮件合并化繁为简!

1.png

前两天在外地出差的时候,收到来自于线上课程《Office高效办公秘诀之邮件合并》的学员W的问题咨询:

甘老师,您好,请问我现在要给全国32个省区市发通知,他们每个省区市都有2-3个人,参加我们单位举办的3-4个学习班的学习,撰文的格式大概是:+++省:请你省+++,+++参加+++班,++++,+++参加+++班,这样的如何实现邮件合并?

刚刚看到这个问题的时候,正好是在赶往机场的路上,也没有仔细看清W的需求,简单的理解成要输出的结果是:+++省张三、李四、王五参加A课程、B课程、C课程,当即回复了W,让他设置Excel数据的表格结构为:

省份、姓名、课程三列,之后参加人员列输入2-3位名字例如:张三、李四、王五,课程列输入3-4个课程名称,例如:A课程、B课程、C课程,之后用信函型邮件合并格式即可实现需求。

仔细一想发现这样操作的话,无法将每个人对应到其报名的相应课程。之后我又想到了第二种思路,就是把每个人的数据分成不同行的方式输入,比如:

省份     姓名    课程

广东     张三    公文写作

广东     李四    公文写作

广东     王五    演讲技巧

之后用在《Office高效办公秘诀之邮件合并》课程中有一个小节介绍利用Power Query分组合并数据的功能,将数据按照不同的省份进行分组合并。但这样的话,数据汇总之后的表格就会变成如下的结构:

省份     姓名                课程

广东     张三,李四     公文写作

广东     王五               演讲技巧

发完了这个回复给W之后,我就上飞机了。在飞行过程中我突然想到刚刚的表格结构,同一个省份就会有多行数据,就需要使用一对多邮件合并了的方式来操作了。一对多邮件合并只能把同一个省份的不同人的数据写在不同行或不同列,无法写在同一行中。有没有更简单的方法来实现这个需求呢?开发这门课程的初衷,就是力求以简单高效的方式来实现批量文档的制作与生成。

我想了一会没有比较好的思路,之后干脆先把这个问题放一边,好好在飞机上休息一下。等我下飞机的时候,突然有了我们常说的 “啊哈”的灵光一现。我发现解决方案竟然如此之简单,我只要把表格结构变更一下即可轻松实现W的需求了。

image.png

以上图所示的这个表格结构,我只需要一个简单的信函型邮件合并,就可以输出每个省份的通知了。

image.png


当我把这个解决方案发给W之后,对方又提出了一个新的问题,他的报名表已经做好了,是如下图所示的包含有合并单元格的表格结构,而且每门课程也不是一定都会有人报名,有些省份可能只报名参加2门课程,有些省份可能报名参加3门课程,在输出各个省份的通知的时候,如何做到动态根据报名信息进行输出呢?

image.png

image.png


要实现W的这个需求,我们还是需要把他的这个表格结构变成刚刚左侧省份,顶部是课程名称的表格结构,可问题是要如何实现这个表格结构的转换呢?另外,又要怎样动态的根据每个省份不同的报名信息输出相应的通知呢?

这就需要用到高级邮件合并的相关知识了,如果你正好有这方面的需求,那不妨点击的Office高效办公秘诀之邮件合并,掌握与代码相关的邮件合并高级应用。

猜你喜欢

转载自blog.51cto.com/12297439/2562921
今日推荐