红楼外传——三种方法制作工资条
红楼外传——王熙凤巧做工资条...
“来晚了来晚了,让大家久等。”
大观园内,凤姐满面笑容出现在大家的面前。
“姐姐来了就好,姐妹们都等急了”宝玉见凤姐到来急急的说。
“今天请大家看看工资条的作法。”凤姐说着拿出一份表格展现在大家的面前。
“这个不难。”黛玉抢先一步在电脑上操作起来。“不错不错”凤姐连连称赞,“只是此方法不能随数据变化自动更新,也是美中不足”
宝玉思索片刻:“那就用公式来处理好了”。
新建一个工作表,命名为“工资条”,然后在A1单元格输入公式,右拉下拉即可:
=CHOOSE(MOD(ROW(1:1),3)+1,"",工资表!$A$1:$F$1,OFFSET(工资表!A$1,ROW(1:1)/3+1,))“宝兄弟越来越牛了,快解释一下公式吧。”凤姐说道。
“公式稍微有点小复杂,大家可以大致了解一下计算过程。
首先,使用MOD(ROW(1:1),3)+1,得到1 2 3 1 2 3……这样循环的序列号。然后使用CHOOSE函数,以此为索引值,依次返回空文本""(空白行)、工资表!$A$1:$F$1(标题)和OFFSET(工资表!$A$1:$F$1,ROW(1:1)/3+1,)的计算结果。
其中OFFSET函数部分的作用是,以第一行为基点,公式每下拉三行,引用的行数向下偏移一行。“
“有劳宝兄弟,我看你输入之后拉来拉去的也麻烦,有没有点一下就可以生成的的方法。”王熙凤又有了新想法。
“我来写一个吧。”元春说道。
“先将工资表建立一个副本,右键单击工作表标签→查看代码,在代码窗口写上以下代码:
Sub 生成工资条()
Dim i As Integer, iLastRow As Integer
Application.ScreenUpdating = False
iLastRow = Range("A1").CurrentRegion.Rows.Count
For i = iLastRow To 3 Step -1
Range("A" & i).Resize(2, 1).EntireRow.Insert
Range("A" & i + 1).Resize(1, 8).Value = Range("A1").Resize(1, 8).Value
Next i
Application.ScreenUpdating = True
End Sub
按F5键运行代码即可生成工资条了。
代码大意是,先获取最大行号,从最大行号循环到第三行的位置,每循环一次插入两个空行,在插入的第二个空行填上标题。”王熙凤作揖谢过回府不提,众人还未落座,却见那厢宝玉和黛玉闹嚷嚷争吵起来,预知后事如何,且听下回分解。
图文作者:程习彬
编辑整理:祝洪忠
专业的职场技能充电站
当当网科技类图书限时优惠,满100-50
链接在此,复制到浏览器中打开即可:
http://search.dangdang.com/?key=excel%20home&act=input
关注 Excel之家ExcelHome
微信扫一扫关注公众号