把若干张抬头相同的EXECL表格如何合并在一起?

如题所述

方法一:宏命令控制法
对于Office家族的宏功能,大家或许早有耳闻,但由于需要使用VBA进行编程,所以宏一直让许多人望而却步,不过要使用一个现成的宏就简单多了。首先打开要处理的Excel表,选择“工具→宏→Visual Basic 编辑器”,在编辑器左边的窗口中用鼠标双击Sheet1,会出现代码编辑窗口,在代码编辑窗口输入如下代码(为了不破坏原有的工资表,所以这里采用了将Sheet1的内容复制到Sheet2的方法,所以最后的生成结果是在Sheet2中显示):

Sub MakeSalaryList()
Dim i As Integer
Dim endrow As Integer
'测出数据的最后一行
endrow = Sheet1.Range("a65536").End(xlUp).Row - 1
'把标题贴过去
Worksheets(1).Range("1:1").Copy (Worksheets(2).Cells(1, 1))
For i = 3 To endrow
'把每条数据抬头贴过去
Worksheets(1).Range("2:2").Copy (Worksheets(2).Cells(3 * i - 7, 1))
'把数据贴过去
Worksheets(1).Range(Cells(i, 1), Cells(i, 256)).Copy (Worksheets(2).Cells(3 * i - 6, 1))
Next i

End Sub

关闭编辑器,将自动返回到刚才的Excel表,选择“工具→宏→宏”,将弹出如下对话框:

点击“执行”,将在Sheet2生成如Gz-2所示的转换成工资条,怎样,不复杂吧。当然,如果你的表总Sheet2已经输入了别的内容,就可以将他复制到Sheet3来生成,代码修改也很简单,把其中的Sheet2修改成Sheet3就可以了,其它代码不变。

方法二:公式填充法
相比宏命令,公式填充法更便于理解,不过需要手工操作的步骤稍微多一些,“鱼和熊掌不可得兼”,要用哪种方法就看你的爱好了。
首先打开要操作的Excel工资表,为了不破坏原表(Sheet1)结构,我们仍然采用在Sheet2中进行操作的方法。由于这个工资表一共有L列,18行,要复制的表头项目在第二行,所以在第一个单元格中输入如下公式:
=IF(MOD(ROW(),2)=0,INDEX(sheet1!$A:$L,INT(((ROW()+1)/2))+2,COLUMN()),sheet1!A$2)

接下来的工作就简单了,我们只要使用填充柄将此公式填充到其它单元格,列向填充到L列,行填充到18行就大功告成。
因为在不同的表格中这个公式需要修改的地方比较多,所以这里做一下解释:
由于工资条中的奇数行都是表头,偶数行是数据,所以在这个公式中首先进行奇偶行判断,若是奇数行,直接取工资表的A2单元格数据(即公式中的sheet1!A$2,如果表头数据在第4行第三列则修改为sheet1!C$4)。若是偶数行,则用INDEX()函数来取数。该函数的第一个参数是指定工资表中的一个取数区域(即sheet1!$A:$L,如果不是从A到L列,那么可以修改这个参数,如修改为sheet1!$B$P ,就表示在B到P列之间取数)。当然,如果你想把转换后的数据放在Sheet3而不是Sheet2中,那么,只要在Sheet3中执行以上操作就可以了,并不需要修改公式的内容(见图4)。

采用这种方法不能自动插入空行,给打印后的裁减带来了一定的麻烦,所以,建议在做完后在全选所有单元格,通过调整行高和列宽来解决这个问题。

方法三:Word邮件合并法
对于宏和公式运用不太熟练的朋友别着急,这里还有一招等着你。
首先我们确定好主文档(工资条表格)和数据源(Excel或Access格式的记录表),然后通过“邮件合并”向导把数据源中的的字段信息合并进来。
点击“工具→信函与邮件→邮件合并”,然后在屏幕右侧进入“邮件合并”向导。第一步:选择文档类型。选择“信函”。第二步:选择开始文档。选择默认的“使用当前文档”。 第三步:选取收件人。单击“使用现有列表”区的“浏览”按钮,通过“选择数据源”对话框,定位格式数据源的存放位置,选中并打开。 接着弹出“邮件合并收件人”对话框,在这里可以指定参与邮件合并的记录,选择默认的“全部”,确定返回Word编辑窗口。 第四步:撰写信函。将插入点定位于表格的第二行第一格内,单击“邮件合并”工具栏上“插入Word域”左边的“插入域”按钮,打开“插入合并域”对话框,选中“域”下方列表框中的“序号”字段,并单击“插入”按钮,即可把“序号”字段合并到主文档中。然后用同样的方法把其余字段插入到主文档表格中对应的位置即可。第五步:预览信函。在这里我们可以浏览一下工资条的大致效果,还可以调整“姓名”表格的宽度,让姓名在一行内显示。然后选中“姓名”后的表格区域,单击鼠标右键在弹出的菜单中选择“平均分布各列”,让这些列具有相同的宽度,使工资条更美观。如果这样直接进入打印操作,一页纸只能打印一个工资条, 所以选中整个工资条表格,复制,粘贴到原表格下方空一行后的地方,把插入点定位于主文档中第一和第二个表格之间的空行处,单击“邮件合并”工具栏上的“插入Word域”按钮,在弹出的菜单中选择“下一记录”命令,以此类推,就可以在一页纸上多排几个工资表,充分利用资源了。最后进入第六步:完成合并。然后把工资条打印出来,就制作完成了(见图5)。

OK,再也不用费力地重复劳动专门制作工资条数据表了,通过简单的转化一个数据表就实现了两项完全不同的功能,赶快操练一下吧。

可参考看了要给分哟 我
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-29
抬头相同?什么意思,是表头吗?
另你这些表在同一工作簿中吗?
在同一工作表中吗?还是多个工作表?追问

是指不同工作薄的sheet,但表头相同。

追答

直接复制粘贴就行了呀。

把若干张抬头相同的EXECL表格如何合并在一起?
首先打开要处理的Excel表,选择“工具→宏→Visual Basic 编辑器”,在编辑器左边的窗口中用鼠标双击Sheet1,会出现代码编辑窗口,在代码编辑窗口输入如下代码(为了不破坏原有的工资表,所以这里采用了将Sheet1的内容复制到Sheet2的方法,所以最后的生成结果是在Sheet2中显示):Sub MakeSalaryList()Dim i...

如何把多个一样抬头的excel文档自动把数据合并到一个表格?
1、把所有的表格复制到一个表格里,(不知道有没简单方法)2、点数据,排序。3、用分类汇总 4、筛选包含“汇总”的列出来,复制,到另外一个新表里粘贴 5、查找与替换,替换掉所有“汇总”2个字为空白。6、所要的总表格就搞定了。OK

excel有相同抬头的不同行数据合并成1行 如图左边这样的做成右边这样的...
数组公式向下复制 数组公式,公式输完后,光标放在公式编辑栏同时按下CTRL+SHIFT+回车键,使数组公式生效 J2=IF(ISERROR(LOOKUP(9^9,0\/(($A$2:$A$13=$I2)*(B$2:B$13<>"")),B$2:B$13)),"",LOOKUP(9^9,0\/(($A$2:$A$13=$I2)*(B$2:B$13<>"")),B$2:B$13))向...

excel怎么把几个表合并到一个表?
假设三张表为Sheet1、Sheet2、Sheet3名字都在A列中,可以这么做,最后建一个汇总表Sheet4:A列放所有人的名字,B1中输入:=COUNTIF(Sheet1!A:A,Sheet4!A1)+COUNTIF(Sheet2!A:A,Sheet4!A1)+COUNTIF(Sheet3!A:A,Sheet4!A1)这样B1中就出现了A1中这个人的总签到次数。

excel中如何合并工作簿
合并工作表,方法比较多,常用的办法就是将两个工作表调整为统一格式后,将一个工作表粘贴到另一个工作表的下方,然后删除重复项。删除重复项的方法也很多,下面列举几个,你自己挑选吧。1.Excel 2007删除重复项命令。这个是Excel 新增的功能之一,应用起来比较方便。2.高级筛选法。数据→筛选→高级...

怎么把excel表格的抬头做到表格上去?
excel表格的抬头的具体步骤如下:我们需要准备的材料分别是:电脑、Excel表格。1、首先我们打开需要编辑的Excel表格,选中需要做抬头的单元格。2、然后我们点击打开对齐方式菜单栏上面的“合并后居中”。3、然后我们点击合并的单元格,输入“工资表”即可。

EXCEL里怎么将多个工作表内容合并到同一工作表?
如果格式一样,比方说都有抬头 单位 姓名 什么的可以使用导入外部数据往后连接就可以了.

excel表格中怎么合并同类项,并将多余的行删掉?
根据实际情况选择完上述两个设置后,点击【确定】按钮。这时,在excel中就出现了一个新工作表。左面是空白的透视表区域,右边是数据透视表字段列表,可以拖动和设置。数据透视表列表字段处显示的字段名称是原始数据区域的抬头,可以拖动到下面的四个框中。把【姓名】字段拖到行标签位置,【数量】拖动到【...

EXCEL里面做了个表格,每一页表格的第一行都是同样的表格台头怎么设置...
1.打开“页面设置”对话框,2003版的在“文件”选项卡中,2007以后的版本在“页面布局中就有”打印标题“按钮,或者点击“页面设置”区域右下角的小按钮。上图是2003版,下图是2013版 2.下边这个是2003版的“页面设置”对话框,其他版本的也都是大同小异的,点击一下“顶端标题行”后的框,将光标...

Excel表格中怎么把两个表格按照抬头标准汇总成一个?
把A复制到B可以了,还是A输入一行,B就最后对应行自动生成A的一行数据,那要用VBA

相似回答