新浪博客

(转)WPS表格、excel打印时如何设置每行都带标题行(就像工资条那样)

2013-02-06 16:17阅读:

http://jingyan.baidu.com/article/90895e0fb9e15164ec6b0b08.html


如何把工资表制成工资条?
excel如何让每行都有标题?
WPS表格、excel打印时如何设置每行都带标题行(就像工资条那样)?
----------------------------------WPS表格、excel打印时如何设置每行都带标题行(就像工资条那样)
排序法
确认设置Sheet1工作表的第1行是标题行,第2行开始是数据行。
假设总共有X个数据行(好比共有X个人发工资),和标题行一起总共Y行,Y=X+1。
假设标题行为A1:G1。
第一步:
有数据的单元格设好边框线
第二步:
从H1单元格开始(就是第一个空列)向下填充输入1,2,3、……、Y
继续向下填充输入2.1、3.1、4.1、……、X.1
再继续向下填充输入2.01、3.01、4.01、……X.01
第三步:
在2.1、3.1、4.1、……、X.1所在行(就是数据行下面的A9:G15区域)复制标题行。
第四步:
单击H列任意单元格,单击工具栏上的升序排列按钮,删除H列,完成。
----------------------------------
函数公式法
第一步:
假设原始数据放在Sheet1工作表中,(注意本工作表不要重命名),确认设置Sheet1工作表的第1行是标题行,第2行开始是数据行。
选择另一张空白工作表,比如Sheet2,单击Sheet2标签,
在Sheet2工作表的A1单元格中输入函数公式:
=IF(MOD(ROW(),3)=0,'',IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(Sheet1!$A:$N,INT((ROW()+4)/3),COLUMN())))
鉴于用INT()函数取整似乎不必要,所以整个公式可以稍微简化一点:
=IF(MOD(ROW(),3)=0,'',IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(Sheet1!$A:$N,(ROW()+4)/3,COLUMN())))
鼠标指向A1单元格右下角的填充柄,按住鼠标左键不放向右侧拖,拖的长度应与原表长度相同,比如拖到J1单元格。
注意:如果Sheet1工作表被重命名,比如命名为【工资】,把上述公式中的“Sheet1”替换成“工资”也可以。
----------------------------------
第二步:
选择A1:J1区域,鼠标指向J1单元格右下角的填充柄,按住鼠标左键不放向下拖,
注意观察,比如原表有20行数据,或者说有20个人发工资,那么拖到第60行即可。
加一下边框:选定A1:J2,设上表格线,空行不设。然后选定A1:J3,拖动J3的填充柄向下拖,完成。(因为每个单元格里都是相同的公式,所以本例中加边框可以采用拖到方式,未必适合其他表格。)

----------------------------------
解释:
http://club.excelhome.net/thread-280214-2-1.html
http://soft.ccw.com.cn/apply/office/htm2008/20080716_466115.shtml
该公式运用IF函数,对MOD函数所取的引用行号与3的余数进行判断。如果余数为0,则产生一个空行;如果余数为1,则固定取sheet1中第一行的内容;否则运用INDEX函数和INT函数来取Sheet1对应行上的数。
----------------------------------
条件一:如果余数为0,就返回空
ROW():所在行的行号
MOD(ROW(),3):所在行的行号÷3的余数
MOD(ROW(),3)=0:所在行的行号÷3的余数=0
'':空值
所以,sheet2的第3行、6行、9行、12行……行会得到空行。
----------------------------------
条件二:如果余数为1,就返回sheet1的标题行
MOD(ROW(),3)=1:所在行的行号÷3的余数=1
Sheet1!A$1:属于绝对行相对列的混合引用形式,
取sheet1中第1行第A列的值。
公式拖到B列,
Sheet1!A$1会变为Sheet1!B$1,
取sheet1中第1行第B列的值
所以,sheet2的第4行、7行、10行、13行……会得到标题行。
----------------------------------
条件三:否则取Sheet1中对应行的值
比如说拖到第2行时,因为每三行一组,体现一个人的工资单,第2行应该是第1个人的工资,在sheet1中对应的第1个人的数据是在sheet2的第2行,
(ROW()+4)/3表示:(所在行的行号+4)÷3;就是(2+4)÷3=2
INT()函数是取整。
INT((ROW()+4)/3)表示:对(2+4)÷3取整,还是2。取整似乎不必要
COLUMN()是返回所在列的列号值
INT((ROW()+4)/3),COLUMN()))表示第4行,第?列
Sheet1!$A:$N表示:工作表1中的A列到N列区域
INDEX()函数是返回指定区域中符合条件的值
INDEX(array,row_num,column_num)返回数组中指定的单元格或单元格数组的数值。如果A1=68、A2=96、A3=90,则公式“=INDEX(A1:A3,1,1)”返回68。本函数中,行在前,列在后,行号为数字,列好也是数字,不是A、B。
INDEX(Sheet1!$A:$N,INT((ROW()+4)/3),COLUMN())))表示:
返回工作表1中的A列到N列区域中第4行的相应列的值
所以,sheet2的第8行、11行、14行、17行……会得到数据行内容。
----------------------------------
参考:
http://zhidao.baidu.com/question/17278084.html
----------------------------------
http://hi.baidu.com/hong4777/blog/item/70ccb119e55ccb4642a9ad51.html
----------------------------------
http://soft.ccw.com.cn/apply/office/htm2008/20080716_466115.shtml
----------------------------------
宏(WPS没有此功能)
http://wenwen.soso.com/z/q257875006.htm

我的更多文章

下载客户端阅读体验更佳

APP专享