《Excel中每一行添加出现表头.docx》由会员分享,可在线阅读,更多相关《Excel中每一行添加出现表头.docx(4页珍藏版)》请在三一办公上搜索。
1、Excel中每一行添加出现表头Excel中每一行添加出现表头 一共有以下三个解决方案 1. 写一个宏根据源数据生成“工资单”工作表 2. 用一个比较复杂的公式来生成 3. 使用 Word 配合,用“邮件合并”功能实现 第三种方法比较简单,而且可以很好的控制格式,推荐使用,在这里先解释,建议先看看Word中关于邮件合并的帮助 引用 第一步:建立数据库 新建一个Excel电子表格,将每个职工的工资结构输入表格(注意不能保留标题行,但是不要省略表格中的表头,以免邮件合并时找不到合并域名。在使用Excel工作簿时,必须保证数据文件是数据库格式,即第一行必须是字段名,数据行中间不能有空行等。这样可以使不
2、同的数据共享,避免重复劳动,提高办公效率。),保存名为“x月工资.xls”后即可关闭以备后用。 第二步:建立工资单表格 新建一个Word文档,将新建电子表格的表头复制过来成为1行数列的无数据表格,在表格最后的表格内按“tab”键插入1行。保存为“x月工资.doc”。 第三步:邮件合并 1.在刚建立的“x月工资.doc”文档中,选择菜单栏的“工具/信函和邮件/显示邮件合并工具栏”,则出现“邮件合并工具栏”。邮件合并/插入合并域”将“插入合并域”拖入“邮件合并工具栏”。) 2.在“邮件合并工具栏”中点击“打开数据源”按钮,选择“+连接到新数据源.odc”,在出现打开文件对话框中找到并打开刚保存的E
3、xcel电子表格“X月工资.xls”,点击“打开”会弹出的对话框中点击所需数据源,这时你会发现在工具栏中“插入合并域”处于激活状态。 3.把光标置于要插入相应项目的位置,点击“插入合并域”下拉菜单(下拉菜单中的相应选项与“x月工资.xls”表格中的标题行是一一对应的),然后单击下拉菜单中的相应选项,直至操作完毕。 4.在“邮件合并工具栏”中有“设置文档类型”,选择“目录”类型,点击确定。最后点击“合并到新文档”按钮,你会收到意想不到的效果每位员工的工资记录都成了一个新文档,试试吧! 下面介绍公式法: 引用 先观察思考原数据分布 第1行是标题 第2,3,4,5,.行是数据 观察思考目标数据分布
4、第1,4,7,10,行是标题 第2,5,8,11,行是数据 第3,6,9,12,行是空行 即,当前行号除以3的余数为1的时候,是标题 当前行号除以3的余数为2的时候,是数据 其它是空行 标题行数据直接引用数据表的 A$1,因为每次行号是固定的,所以用绝对引用 数据行数据需要进行偏移 2,5,8,11,除以3,取整, 结果分别是 0,1,2,3, 对应数据表 2,3,4,5, 我们用相对于数据表第1行的偏移,那就应该分别是1,2,3,4 也就是说,相对于数据表第1行的偏移量是 INT(ROW/3) + 1 引用就是 OFFSET(A$1, INT(ROW/3) + 1, 0) 注意,列偏移为 0
5、,即列不偏移 这样,把上述各部分组合起来,得到工资表 A1 的公式 =IF(MOD(ROW,3),OFFSET(Sheet2!$A$1,(MOD(ROW-1,3)0)*ROUND(ROW/3,),COLUMN(Sheet2!A2)-1),) 为了大家看清楚,我分成多行来写 =IF( MOD(ROW,3), OFFSET(Sheet2!$A$1, (MOD(ROW-1,3)0)*ROUND(ROW/3,), COLUMN(Sheet2!A2)-1), ) 然后把 A1 的公式向右复制给 B1-E1,生成第一行数据 再把第一行从 A1-E1 的公式向下复制到人数3行,即得到工资表 最后介绍用宏的方
6、法实现: 引用 下面是全部代码: Sub 加插表头 Dim i As Integer Dim endrow As Integer Dim hrstar As Integer Dim hrend As Integer endrow = Range(a65536).End(xlUp).Row hrstar = InputBox(请输入表头开始行) hrend = InputBox(请输入表头结束行) i = hrend + 2 Do If i endrow Then Exit Do Rows(hrstar & : & hrend).Select Selection.Copy Rows(i & : & i).Select Selection.Insert Shift:=xlDown i = i + hrend - hrstar + 2 endrow = endrow + hrend - hrstar + 1 Loop End Sub