財務辦公軟件技能第二講:工資條的製作

上次小編給各位東奧學員講了一個與批量填充有關的小技巧,這次,小編給大家分享一個利用Excel函數功能針對財務工作中經常遇到的工資條進行製作的技巧,在講解的過程中,大家可能會發現小編用了不同的函數進行組合來實現最終的目標,為了讓大家能跟上講解學習的步驟,小編會針對每個用到的函數進行下講解,逐步帶領大家在生成工資條的過程中,熟悉掌握一些在平日工作中比較有用的函數,並建立起一種如何有效運用Excel函數的思維,好了,如若想了解的話,那就跟我來學下吧。

一、分析功能需求

我們這篇文章的數據源如下所示:

財務辦公軟件技能第二講:工資條的製作

在平時工作中,我們將其叫做工資表,通過這個Excel表,可以讓財務工作者直觀的瀏覽、分析、統計本公司所有人員的工資數據及變動情況,但這些信息如果要傳達給公司裡的每個人,由於這些數據具有一定的隱私性,為了避免個人工資信息被其他不相關的人員獲取,一般會製作成工資條的樣式裁切後發給個人,樣式如下所示:

財務辦公軟件技能第二講:工資條的製作

我們如果想利用Excel將工資表直接生成工資條,第一步就是分析要實現的功能需求:

1、生成的工資條,每行數據都要有一個同樣的標題行;

2、為防止裁切時,因裁切不準導致影響數據的閱讀,故應在每個人工資條與工資條之間,加上一個適當寬度的空行;

3、工資條與工資條之間,唯一不同的內容取自數據源工資表裡每個人的工資數據;

二、精煉函數

有了需求,我們就可以對照需求尋找可以實現該功能的函數公式;

1、工資條與工資條之間的空白,我們可以將其視為一個空行;

2、Excel如要生成工資條,工資條數據以行為單位,同時以三行為一個循環反覆生成,其中:第一行是標題行,第二行是個人工資數據,第三行是空白間隔行;

3、我們選擇第一個函數,就是choose(X,Y1,Y2,Y3)函數,這個函數的作用就是,根據第一個參數X的值,來對應選擇後面不同的參數值,如果X=1,則返回參數Y1,如果X=2,則返回參數Y2,以此向後可以設置最多有254個後續參數供選擇;我們利用這個函數的特性,將參數X採用公式生成一個長度為3的數據循環,讓後面跟著的三個參數Y1、Y2、Y3,數據輸出分別對應工資條循環裡的第一行標題行、第二行個人工資數據行、第三行空白間隔行;

4、接下來,需求進一步分解為針對參數X要通過公式實現其輸出數值為以1、2、3為循環的需求A,以及針對參數Y2要通過公式實現對工資表每行個人工資數據提取的需求B,其中:

需求A,可以使用MOD(X,Y)函數來實現,這個函數是取餘函數,如果我們想實現1、2、3為循環,則可以用函數MOD(ROW(3:3),3)來定義參數X,當我們在工資條區域輸入公式後,向下、向右拖拉單元格填充生成工資條時,內部的ROW(3:3)函數會根據拖拉行數的增加,以3為起始值,步長為1進行遞增,通過外層的取餘函數,我們可以得到一個以0為起始值,在0、1、2之間進行的循環;由於我們要的參數X需要實現1、2、3之間的循環,才能取到後面的Y1、Y2、Y3,故在MOD(ROW(3:3),3)後面,需要再加上一個1,才能完整的實現需求A;

需求B,可以使用OFFSET(X,Y,Z)函數來實現,這個函數的作用是以參數X代表的單元格起始區域最左上角單元格開始,向下移動Y個單元格、向右移動Z個單元格後定位的新單元格區域;我們可以看到,工資表裡每個人的工資數據位置相對第一行標題行位置,是以行數1為單位逐行向下移動的。如果我們將起始位置定位在標題行最左側A2單元格位置,那麼當我們在A2單元格輸入公式並向下、向右拖拉填充公式時,工資條區域每向下延伸3行為一個人的工資條數據,則對應的工資表數據源向下延伸1行為一個人的工資表數據,也即以工資表標題行最左側的A2為起始單元格,工資條區域每向下拖動3個單元格距離,工資表區域向下移動1個單元格距離,這裡我們用A2來代表 OFFSET(X,Y,Z)函數里的參數X,表示從A2開始偏離,用INT(ROW(1:1)/3+1)函數來代表OFFSET(X,Y,Z)函數里的參數Y,表示生成一個以1為起始值,每拖拉延伸3行數值參數Y就增加1的一個序列,以省略參數Z代表相對列不偏移,以便完整的實現需求B;

三、函數組合

根據以上所述,我們整理出工資條區域最左上角單元格的公式,該公式可填寫在任一單元格中,如下所示:=CHOOSE(MOD(ROW(3:3),3)+1,A$2,OFFSET(A$2,INT(ROW(1:1)/3+1),),"")

其中紅色的函數MOD(ROW(3:3),3)+1是choose(X,Y1,Y2,Y3)函數里第一個參數X,用來隨著工資條區域單元格拖動自動填充時,在其後的三個參數中循環取值,其中:

參數Y1是A2,即當choose(X,Y1,Y2,Y3)函數第一個參數X循環輸出值為1時,將工資表最左上角A2單元格的內容循環填充到工資條當前單元格內,同時利用$符號鎖定A2位置中的行,使得向下拖拉時,每次都是取當前行次的標題欄數據;

參數Y2是OFFSET(A$2,INT(ROW(1:1)/3+1),),即當choose(X,Y1,Y2,Y3)函數第一個參數X循環值為2時,也即當工資條區域每次循環到每個工資條第二行數據時,從工資表區域以A2單元格為基準向下移動對應行次的距離進行取數;

參數Y3是"",即當choose(X,Y1,Y2,Y3)函數第一個參數X循環值為3時,也即當工資條區域每次循環到每個工資條第三行數據時,以空值進行填充,形成裁切空白區域行;

四、總結

1、理解choose(X,Y1,Y2,Y3)函數的作用,可以根據不同情況選擇不同結果,相對常用的If(X,Y,Z)函數更直觀;

2、理解MOD(X,Y)函數的作用,可以生成循環數據;

3、理解row(1:1)函數,可以隨著拖動行次填充自動累加生成數列;

4、理解OFFSET(X,Y,Z)函數,可以在原有單元格區域X的位置基礎上,向下、向右移動Y、Z個單元格定位一個新的單元格位置,該函數還有兩個後續參數,對應新區域的行和列數,本例中沒有用到;

5、理解單元格鎖定行、列、行與列對拖動填充的影響。


分享到:


相關文章: