名称:在电子表格实现且超越Word的邮件合并功能的可行性方法
专利人: 王忠泽
专利号:202211743790.3
所属技术领域
本发明属于电子表格的应用领域,具体涉及在电子表格程序中,例如Excel,实现目前只有在Office Word等文字处理软件上才有的邮件合并功能,并且还突破了Office Word的邮件合并功能的1页主文档只能合并(即调用)数据源表里的1条记录的局限,即使在1页电子表格中有多个相同的主表格,本发明也能依序从数据源表里将数据调入到1页中的多个相同的主表格里。
背景技术
目前,只有在文字处理软件上具有邮件合并功能,在电子表格软件里没有邮件合并功能。所谓邮件合并,是Office Word软件中一种可以批量处理的功能。在Office中,先建立两个文档:一个WORD包括所有文件共有内容的主文档(比如未填写的信封等)和一个包括变化信息的数据源表(比如要填写的收件人、发件人、邮编等,该数据源表既可是EXCEL表,也可是WORD表),然后使用邮件合并功能在主文档中插入变化的信息,合成后的文件用户可以保存为Word文档,可以打印出来,也可以以邮件形式发出去。邮件合并功能,应用十分广泛,除了批量打印信封、信函外,还可以轻松地批量制作简历、标签、工资条、成绩单、各类获奖证书、准考证、明信片等等。但目前,在电子表格程序里,例如EXCEL,没有邮件合并功能。可日常工作常常遇到在电子表格环境下,需要将变化的信息数据插入到相同格式的主表格里(相当于Word的邮件合并功能的主文档,比如说未填写的信封等),即实现邮件合并功能。但由于电子表格程序里没有邮件合并功能,因此,目前只能结合文字处理软件的邮件合并功能完成任务,即只能参照电子表格环境下的主表格,在文字处理软件里制作表格,再引用邮件合并功能。要结合文字处理软件的邮件合并功能,就带来以下三个问题。一是要参照电子表格环境下的主表格,在文字处理软件里制作表格,增加了工作量。二是电子表格环境下的主表格,如果包含函数、公式等,总之比较复杂,则无法在文字处理软件里制作相应的表格。三是有的情况下,只认电子表格,不认文字处理软件格式的表格,而文字处理软件的邮件合并后的文档是文字处理软件格式文档。例如,写字机书写表格,只认电子表格格式。此外,即使能结合文字处理软件的邮件合并功能,但邮件合并功能也存在1页主文档只能合并(即调用)数据源表里的1条记录的局限。当1页存在多个相同的主表格时,利用邮件合并功能,这1页中的多个主表格,均是调用数据源表里的同一条记录,这显然是错误的。实际中,就存在1页存在多个相同的主表格的情况,例如,照片档案的5时照片档案说明芯页,1页幅面,就有2个相同的5时照片档案说明表格。在此种情况下,就不能结合文字处理软件的邮件合并功能。现实中,特别是日常工作经常出现要求在电子表格环境下,实现邮件合并功能,能结合文字处理软件的邮件合并功能还差强人意,只是增加重新制表的额外工作量,如果遇到不能结合文字处理软件的邮件合并功能的情况,则无法避免大量的复制粘贴,导致的工作量大、效率低下的问题就显得更为突出。
发明内容
为了解决目前电子表格软件没有邮件合并功能以及结合文字处理软件的邮件合并功能存在的局限,本发明通过在电子表格环境下建立数据源表、序号表以及对主表格的有关单元格进行VLOOKUP查询函数的设置,然后对包括主表格的页面进行格式刷处理及对包含主表格的第1页幅面进行下拉复制,实现函数调取数据,最终得到一系列插入了数据源表里的所有变化信息,且格式与主表格完全一致的众多表格。如果在日常工作中经常遇到在电子表格环境下,要将数据源表的变化信息数据插入到主表格里,则在第1次对包括序号表、主表格的下拉复制、VLOOKUP查询函数的查询区域选定、格式刷处理等操作,可特意较日常数据量占据的范围作冗余性延伸,以在此后工作中节省下拉复制、格式刷处理等操作。在对下拉复制等操作作冗余性延长的基础上,以后,当有新数据时,只须对数据源表的旧数据删除,然后将新数据按列复制粘贴,或者将新数据一次性复制到数据源表(但存放新数据的表与数据源表的字段顺序要确保一致),由于VLOOKUP查询函数的作用,就自动地在主表格系列里插入了新的数据。要对这些插入了新数据的一系列主表格进行批量打印等处理,只须根据数据源表的最末数据的序号数除以1页幅面“主表格”包含主表格的个数(注:1个主表格调用数据源表的1条记录),即可简单测算出插入了新数据的“主表格”总的页数(具体测算方法见后面内容)。如此,就可对此页数范围内的主表格,根据需要,要么全部打印,要么部分打印。总之,这就在电子表格环境下,实现了文字处理软件中的邮件合并功能,而且还超越了文字处理软件中邮件合并功能1页主文档只能调用1条数据记录的局限。
本发明的技术方案是:
总的思路是:首先在需要向其中插入变化信息数据的电子表格,这里姑且称为“主表格”,在“主表格”所在的工作簿里,新增2个工作表,一个姑且命名为“数据源表”,一个姑且命名为“序号表”。“数据源表”以“主表格”要输入数据的单元格的项目名称为根据,设立与项目名称相同的字段建表并输入数据(或试验数据)。随后建“序号表”表,通过对从1开始,按一定规则,下拉复制,直至出现的数值大于等于“数据源表”的最末一个数据的序号数为止(如果日常工作经常需要在该“主表格”运用邮件合并功能,则可继续下拉复制直至出现的数值足够大于“数据源表”的日常数据量,即日常数据量无论增减均在这个足够大的数值范围之内,之所以如此冗余性操作,是为免去今后再对“序号表”表的下拉操作)。建“序号表”的目的是为随后在“主表格”里要输入数据的单元格输入VLOOKUP查询函数,为该查询函数提供要查询的值。当“主表格”里某单元格里的VLOOKUP查询函数在“数据源表”的第1个字段,即序号字段中找到与“序号表”里要查询的值相同的值时,返回“数据源表”里同一记录里的相应字段的信息数据。这就实现了在“主表格”里插入变化的信息数据的目的。新建了“数据源表”和“序号表”后,最后,在“主表格”的第1页的表格里,在其要输入数据的单元格逐一输入VLOOKUP查询函数。建完2个表以及在“主表格”输入VLOOKUP查询函数后,就选定“主表格”第1页幅面的左边的行标,接着,双击“格式刷”,然后,用格式刷从“主表格”第2页的左边的第1个行标向下刷,直至行标大于等于“数据源表”最末一个数据所在的“主表格”的那页的最末行标数(其最末行标数,是最末页数乘以每页的行数,每页的行数见后面建“序号表”里的内容,而最末页数可通过1页幅面的“主表格”包含的主表格的个数测算,当只包含1个主表格时,“数据源表”最末一个数据的序号数即为最末一个数据所在的“主表格”的页数,当1页幅面的“主表格”包含几个主表格时,则“数据源表”最末一个数据的序号数除以1页的主表格的个数,能整除,结果即为最末页数,不能整除,结果的整数部分加1,则为最末页数)为止(如果日常工作经常需要在该“主表格”运用邮件合并功能,则可继续将格式刷向下刷,直至出现的行标数值足够大于“数据源表”的日常数据量在“主表格”里所占据的行标,之所以如此冗余性操作,是为免去今后再对“主表格”的格式刷操作)。然后,对“主表格”的第1页幅面右下角的黑十字进行下拉复制,直至“数据源表”的最末一个数据通过查询函数被调入“主表格”里,即下拉复制直至行标大于等于“数据源表”最末一个数据所在的“主表格”的那页的最末行标数(最末行标数的测算,见本自然段前面格式刷部分括号内的内容)。如果日常工作经常需要在该“主表格”运用邮件合并功能,则可继续下拉复制至前面格式刷冗余性下刷到达的足够大的行标,目的同样是为免去今后再对“主表格”的下拉复制操作。经过对“序号表”、“主表格”的冗余性操作,以后有新数据,只须将“数据源表”的旧数据删除,然后将新数据按列复制粘贴,或者将新数据一次性复制到数据源表(但存放新数据的表与数据源表的字段顺序要确保一致),由于查询函数的作用,就自动地在主表格系列里插入了新的数据。只须根据数据源表的最末数据的序号数和1页“主表格”包含的主表格的个数,即可测算出插入了新数据的“主表格”的最末页数(见本自然段前面格式刷部分的括号里内容)。由于,“主表格”的最末页数等于“主表格”的总的页数,如此,就可对“主表格”在其总的页数之内范围进行批量打印等操作,实现了在电子表格环境下的邮件合并功能。
为了实现以上总体思路,具体步骤为:
1、首先在电子表格环境下,打开日常处理的需要向其中插入变化信息数据的表格(或新建一个表格),并在其所在的工作簿新建2个工作表,然后在日常处理的需要向其中插入变化信息数据的表格(或新建的表格)里的单元格输入VLOOKUP查询函数。为便于说明,这里姑且将日常处理的需要向其中插入变化信息数据的表格(或新建的表格),重命名为“主表格”。新建的2个工作表,姑且将其在工作簿里的默认名sheet,分别重命名:“数据源表”和“序号表”。新建这2个工作表以及为“主表格”里要输入数据的单元格输入VLOOKUP查询函数的具体步骤如下:
建“数据源表”:在新建的“数据源表”,依次从A1单元格向右在单元格中输入各表头字段名:序号以及与“主表格”要输入数据的单元格的项目名称一致的字段名。这里,姑且按日常在“主表格”输入数据的单元格的先后顺序对要输入数据的字段名在“数据源表”里进行排序录入表头。特别说明,序号,是从1开始的自然数,且必须为第1列,因为VLOOKUP查询函数需要在数据表第1列中进行查找。然后,将输入“主表格”的变化的信息数据(为演示需要也可用以前旧的数据或任意数据作试验),按列复制粘贴到“数据源表”相应的字段列里,也可将信息数据整个复制粘贴,但原始表的字段顺序应与“数据源表”的字段顺序一致。最后,在“数据源表”的序号字段下的A2与A3,分别输入1和2,然后选定A2与A3,鼠标放在A3单元格右下角,当出现黑十字时,下拉黑十字,直至表里的最后一条记录。这就完成了“数据源表”的建立。
建“序号表”:分两种情况建“序号表”,第一种情况是,1页“主表格”只有1个主表格,第二种情况是,1页“主表格”有至少2个相同的主表格,即是说,这些主表格要输入的数据项目(即对应于“数据源表”的字段)完全相同,只是数据的记录序号不同。
先说第一种情况,即1页“主表格”只有1个主表格建“序号表”。步骤为:在A1输入表头字段:序号。在A2输入1。然后回到“主表格”,点击“打印预览”,然后关闭,界面出现分页的虚线。由此,从第1页,虚线上,观察左边最末行标数,得出“主表格”一页的行数,再回到“序号表”,选定A2至Ax,A2至Ax的行数应为“主表格”一页的行数。假如“主表格”一页的行数为a,那么x-1=a,即x=a+1。选定了A2至Ax后,鼠标放在Ax右下角,当出现黑十字时,下拉黑十字,直至出现的数值大于等于“数据源表”的最末一个数据的序号数为止(如果日常工作经常需要在该“主表格”运用邮件合并功能,则可继续下拉复制直至“序号表”里出现的数值足够大于“数据源表”的日常数据量,目的是免去今后再对“序号表”的下拉操作)。
第二种情况下,即1页“主表格”有至少2个主表格,在该情况下建“序号表”。假设1页有n个主表格,与第一种情况不同的是,不仅在A2输入1,还要接着在A3输入2,…,直至在An+1输入n。然后再回到第一种情况在A2输入1之后的步骤,即:回到“主表格”,点击“打印预览”,然后关闭,界面出现分页的虚线。由此,从第1页,虚线上,观察左边最末行标数,得出包含多个主表格的一页“主表格”的行数,再回到“序号表”,选定A2至Ax,A2至Ax的行数应为“主表格”一页的行数。假如包含多个主表格的一页的行数为a,那么x-1=a,即x=a+1。选定了A2至Ax后,鼠标放在Ax右下角,当出现黑十字时,下拉黑十字,直至出现的数值大于等于“数据源表”的最末一个数据的序号数为止(如果日常工作经常需要在该“主表格”运用邮件合并功能,则可继续下拉复制直至“序号表”里出现的数值足够大于“数据源表”的日常数据量,目的同样是免去今后再对“序号表”的下拉操作)。
在“主表格”里输入VLOOKUP查询函数:在“主表格”需要录入数据的有关单元格输入VLOOKUP查询函数。我们这里就按“数据源表”里除序号字段外的字段的顺序,在这些字段数据对应插入“主表格”的单元格里,逐一输入VLOOKUP查询函数。这里,与建“序号表”分两种情况一样,分别在“主表格”里输入VLOOKUP查询函数。
先说在第1种情况下,即1页“主表格”表只有1个主表格,在主表格里输入VLOOKUP查询函数。步骤为:在“数据源表”里除序号字段外的第1个字段对应插入的主表格的单元格输入:“=VLOOKUP(”,此时,界面会提示依次输入4个参数,第一个参数是问需要查询什么值,点击第一个参数,选择“序号表”的A2,即:序号表!A2,其值为1。输入半角状态下的逗号,于是第二个参数显亮,第二个参数是问需要在哪个区域查询,点击它,并选择“数据源表”的包括表头和所有数据记录的区域(如果日常工作经常需要在该“主表格”运用邮件合并功能,则可下拉选择比平时数据量足够大的区域,其目的是确保今后无论“数据源表”的数据是多是少,均处于VLOOKUP查询函数的查询区域内)。选择后,立即按“F4”,把选中的区域转换成绝对位置,以保证以后复制时引用的位置不发生变化。要注意,我们要查询的对象,必须在查询区域的第一列。因为VLOOKUP查询函数只在查询区域的第一列进行查询。例如,这里我们要查询的对象,即为“数据源表”的查询区域的第一列即序号列,VLOOKUP查询函数是将要查询的值,即“序号表”!A2,在“数据源表”的第一列即序号列查找与查询的值相匹配的数值。输入半角状态下的逗号,于是第三个参数显亮,第三个参数是问在查询区域的第一列(即“数据源表”的序号字段那列)中查找到与查询的值匹配的数据后,返回第几列。因为该主表格的单元格的数据对应于“数据源表”里除序号字段外的第1个字段,它是第2列,因此,这里输入2。输入半角状态下的逗号,于是第四个参数显亮,第4个参数是问需要查询的匹配类型,是近似匹配还是精确匹配,这里输入“O”,进行精确匹配。再输入:“)”,回车。这就完成了对“数据源表”里除序号字段外的第1个字段对应的“主表格”的单元格输入VLOOKUP查询函数工作。接着将刚才“数据源表”里除序号字段外的第1个字段对应的“主表格”的单元格的VLOOKUP函数,拉黑选定,并点“复制”。下面就依次对“数据源表”里除序号字段外的第2个字段、第3个字段、…、最后一个字段分别对应的“主表格”的单元格,逐个在单元格里点“粘贴”,将“数据源表”里除序号字段外的第1个字段对应的“主表格”的单元格的VLOOKUP函数粘贴在单元格里,再依次对“数据源表”里除序号字段外的第2个字段、第3个字段、…、最后一个字段分别对应的“主表格”的单元格里的VLOOKUP函数,逐个更改函数的第3个参数,即返回插入单元格的数据在“数据源表”的列数,即将原粘贴的2,分别改为3、4、…、“数据源表”里的最末那个字段的列数。
接着再说第2种情况下,即1页“主表格”表有至少2个主表格,在这些主表格里输入VLOOKUP查询函数。假设1页“主表格”表有n个完全相同的主表格。先在第1个主表格里输入VLOOKUP查询函数,其步骤与第1种情况下输入VLOOKUP查询函数完全相同,这里不再赘述。然后,选定第1个主表格,复制,光标选定第2个主表格的左上的第1个单元格(或选定整个第2个主表格),粘贴,将第1个主表格复制到第2个主表格。同样操作,将第1个主表格复制到第3个、…、第n个主表格。然后,光标选定第2个主表格的任一要输入数据的单元格的查询函数的第1个参数,复制。这里说明一下,在第2个主表格里,VLOOKUP查询函数的第1个参数均是一样的。然后,点开菜单栏里的“替换”窗口,在该窗口的“查找内容”栏,粘贴,将第2个主表格的VLOOKUP查询函数的第1个参数粘贴在栏内。然后,光标选定第1个主表格的任一包含VLOOKUP查询函数的单元格,譬如“数据源表”里除序号字段外的第1个字段对应的“主表格”的单元格,然后选定该单元格VLOOKUP查询函数的第1个参数,即“序号表!A2”,复制,然后在“替换”窗口的“替换为”栏里粘贴,然后将其中的A2的2改为3,点“全部替换”,屏幕显示已完成多少次替换,到此,即完成了第2个主表格的有关单元格的VLOOKUP查询函数的设置。同样操作,设置第3个主表格的“数据源表”里除序号字段外的所有字段对应的“主表格”的单元格的VLOOKUP查询函数的设置。即:光标选定第3个主表格的任一要输入数据的单元格的查询函数的第1个参数,复制,在菜单里的“替换”的“查找内容”栏粘贴。回到第1个主表格,选定任一要输入数据的单元格的查询函数的第1个参数,即“序号表!A2”,复制,然后在“替换”窗口的“替换为”栏里粘贴,然后将其中的A2的2改为4,点“全部替换”,屏幕显示已完成多少次替换,到此,即完成了第3个主表格的有关单元格的VLOOKUP查询函数的设置。与第2个、第3个主表格操作相同,紧接着光标选定第4个主表格,…然后将其中的A2的2改为5,点“全部替换”。…。光标选定第n个主表格,…然后将其中的A2的2改为n+1,点“全部替换”。到此,就完成了第2种情况下的1页的所有的主表格的VLOOKUP查询函数的输入。
2、对“主表格”进行格式刷处理及下拉复制,生成一系列插入了数据源表里的所有变化信息,且格式与主表格完全一致的众多表格。作法为:
在“主表格”中,点击“打印预览”,然后关闭,界面出现分页的虚线,鼠标选定第1页幅面的左边全部行标,然后双击格式刷,接着从第2页左边的第1个行标开始向下刷,直至行标大于等于“数据源表”最末一个数据所在的“主表格”的那页的最末行标数(其最末行标数,是“主表格”最末页数乘以“主表格”每页的行数,“主表格”每页的行数见前面建“序号表”里的内容,而“主表格”的最末页数可通过1页幅面的“主表格”包含的主表格的个数测算,当“主表格”只包含1个主表格时,“数据源表”最末一个数据的序号数即为最末一个数据所在的“主表格”的最末页数,当1页幅面的“主表格”包含几个主表格时,则“数据源表”最末一个数据的序号数除以1页“主表格”包含的主表格的个数,能整除,结果即为“主表格”最末页数,不能整除,结果的整数部分加1,即为“主表格”最末页数)为止(如果日常工作经常需要在该“主表格”运用邮件合并功能,则可继续将格式刷向下刷,直至出现的行标数值足够大于“数据源表”的日常数据量在“主表格”里所占据的行标,之所以如此冗余性操作,是为免去今后再对“主表格”的格式刷操作)。然后鼠标选定“主表格”的第1页幅面,将鼠标放到“主表格”第1页幅面的右下角,即分页的横虚线与右边沿的竖虚线的交叉点,当出现黑十字时,下拉黑十字,直至“数据源表”的最末一个数据通过VLOOKUP查询函数被调入“主表格”里,即下拉复制直至行标大于等于“数据源表”最末一个数据所在的“主表格”的那页的最末行标数(最末行标数的测算,见本自然段前面部分括号里的内容)。如果下拉中间停顿,“数据源表”里的最末一个数据还未被调入“主表格”,需要继续下拉,则此时,用不着再从第1页幅面的右下角下拉,只须选定刚才下拉就近的一页幅面,然后在其右下角处的黑十字处接着下拉。如果日常工作经常需要在该“主表格”运用邮件合并功能,则可继续对“主表格”下拉复制至前面格式刷冗余性下刷到达的足够大的行标,目的同样是为免去今后再对“主表格”的下拉复制操作。至此,无论这一系列操作是属于临时性地在该“主表格”运用邮件合并功能的操作,还是属于日常工作经常需要在该“主表格”运用邮件合并功能的首次操作,“数据源表”里的所有数据已被调入“主表格”里,对插入了新数据的主表格进行批量处理,例如批量打印,只须根据数据源表的最末数据的序号数除以1页幅面“主表格”包含主表格的个数(1个主表格调用数据源表的1条记录),即可测算出插入了新数据的“主表格”总的页数(具体见本自然段前面部分括号里的测算“主表格”最末页数内容,“主表格”总的页数等于“主表格”最末页数)。在此基础上,就可对“主表格”总的页数范围内的主表格,根据需要的起止页数,要么全部打印,要么部分打印。对于日常工作经常需要在该“主表格”运用邮件合并功能的情况,由于首次操作里的一系列冗余操作处理,首次之后,当又需要在该“主表格”运用邮件合并功能,则只须将“数据源表”里的旧数据删除以免混淆,然后,将新的日常数据按列或一次性粘贴到“数据源表”里(一次性粘贴应确保两个表格数据字段顺序一致),新数据就自动地被调入到具有大量冗余的“主表格”里,因此,新数据复制到“数据源表”后,接着按本自然段前面所述内容测算出插入了新数据的“主表格”最末页数,也即是插入了新数据的“主表格”总的页数,因为“主表格”最末页数等于“主表格”总的页数,得到插入了新数据的“主表格”总的页数,即可对此总的页数范围内的“主表格”,根据需要的页数范围,进行批量打印等处理。
本发明的有益效果:
本发明解决了目前在电子表格软件里没有邮件合并功能的问题,实现了在电子表格环境下,只需在数据源表将新的日常信息数据覆盖旧的日常数据,就可自动将这些新的日常数据依序导入到众多格式完全相同的主表格里,对这些导入了新的日常数据的众多相同主表格的批量处理(例如打印等)的问题,只须输入相关处理页码范围即可解决。不仅如此,本发明还解决了文字处理软件的邮件合并功能不能解决的1页存在多个相同的表格或文档的邮件合并功能问题(文字处理软件的邮件合并功能,1页主文档中只能调用数据源表里的1条记录)。如此,今后可反过来,在文字处理软件环境下,遇到要解决1页有多个相同文档或表格的邮件合并问题,则可结合电子表格软件(文字处理软件环境下的文档格式,可在电子表格下设置,只不过不要表格边框罢了),利用本发明实现。本发明,与文字处理软件里的邮件合并功能一样,大大提高了工作效率,避免了目前在电子表格环境下,由于无邮件合并功能而导致的反复复制粘贴的工作量大、效率低下的局面。特别是对于日常工作中经常需要在电子表格环境下,应用邮件合并功能的情况,本发明提高工作效率、避免大量烦琐工作的效果,显得尤为突出。