不同的方法,永遠(yuǎn)相同格式的工資條。當(dāng)然制作工資條的方法有很多,比如排序法,函數(shù)法,vba 或錄制宏,還有以前的郵件合并法。制作的武器庫(kù)各種槍炮齊全,我們?nèi)匀恍枰W(xué)習(xí),常學(xué)常新。
今天請(qǐng)大家看看工資條的作法。如下表格展現(xiàn)在大家的面前,工資表的原始數(shù)據(jù)結(jié)構(gòu)。
這是一份標(biāo)準(zhǔn)的工資表格式,需要做成工資條通知到每一個(gè)人。但是如果一個(gè)一個(gè)的復(fù)制顯得非常滿意效率和速度,加上準(zhǔn)確性也不大好。
我們給大家看看第一種方式,工資條的制作。排序法如下:
但是這個(gè)方法不能隨數(shù)據(jù)變化自動(dòng)更新,也就是說(shuō)一旦生成了,如果數(shù)據(jù)有變數(shù),就需要重新更新一份啦!這也是這種方法美中不足的一點(diǎn)。
第二種制作方式,就是我們常說(shuō)的公式法來(lái)制作。
建立2個(gè)工作表,分別是工資表和工資條,如下圖所示:
在新建工資條表格中,然后在A1單元格輸入公式,右拉下拉和向下拉即可:
=CHOOSE(MOD(ROW(1:1),3) 1,'',工資表!$A$1:$F$1,OFFSET(工資表!A$1,ROW(1:1)/3 1,))
因?yàn)楣缴晕⒂悬c(diǎn)復(fù)雜,涉及到甘薯的嵌套和運(yùn)算邏輯,但是我們可以大致了解一下運(yùn)算的方式。
首先,使用MOD(ROW(1:1),3) 1,得到1 2 3 1 2 3……這樣循環(huán)的序列號(hào)。然后使用CHOOSE函數(shù),以此為索引值,依次返回空文本''(空白行)、工資表!$A$1:$F$1(標(biāo)題)和OFFSET(工資表!$A$1:$F$1,ROW(1:1)/3 1,)的計(jì)算結(jié)果。
其中OFFSET函數(shù)部分的作用是,以第一行為基點(diǎn),公式每下拉三行,引用的行數(shù)向下偏移一行。
用公式,雖然復(fù)雜,但寫(xiě)一次可以把公式復(fù)制出來(lái)生成一個(gè)只有公式的工作表,以后每個(gè)月工資算好,打開(kāi)那個(gè)工作表,更改一下數(shù)據(jù)源就行。而且工資數(shù)據(jù)有改動(dòng)的時(shí)候,只要復(fù)制改動(dòng)的編號(hào),就可以打印更改的那幾項(xiàng)。
是不是看到這里還是感覺(jué)公式其實(shí)也是挺復(fù)雜的呀,有沒(méi)有在一瞬間就可以批量生成工資條的呢?
方法也有,就是我們常說(shuō)的VBA方式,用代碼一鍵來(lái)完成工資條的制作。
我們先看動(dòng)畫(huà)是如何去實(shí)現(xiàn)的啦!
右鍵單擊工作表標(biāo)簽→查看代碼,在代碼窗口寫(xiě)上以下代碼:
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
點(diǎn)擊執(zhí)行即可生成工資條,這個(gè)是一鍵操作即可。
代碼的意思是,先獲取最大行號(hào),從最下面循環(huán)到第三行的位置,每循環(huán)一次插入兩個(gè)空行,循環(huán)的步數(shù)為1步,在插入的第二個(gè)空行填上標(biāo)題。
以上三種工資條的制作方式你GET到幾種?
聯(lián)系客服