古語常說,要學以緻用,學而不用則殆。今天給大家講一個實際業務中可以用得到的函數,那就是專門可以生成批量工資條的MOD函數。這個函數的作用是可以把工資明細,批量轉化為工資條的特殊格式,節省複制粘貼的操作時間。
上圖是某公司的工資表,要在另外的一個工作表中分解成工資條的格式,以便打印方便,如何去實現呢?
仍是我們熟悉的函數,老規矩,在講解之前,還要适當地複習一個以前講過的函數,這樣做是為了偶爾看到我文章的人不必要再去查找我之前的講解了。當然,對于經常看我文章已經熟悉掌握函數的朋友可以略去的。
今日要複習的函數有,MOD()、INDEX()、ROW()、COLUMN()。
一、MOD()函數 MOD函數是一個求餘函數,其語法為: MOD(number,divisor),即是兩個數值表達式作除法運算後的餘數。特别注意:在EXCEL中,MOD函數是用于返回兩數相除的餘數,返回結果的符号與除數(divisor)的符号相同。參數 Number 為被除數,Divisor 為除數。如果 divisor 為零,函數 MOD 返回值為#DIV/0!。說明:函數MOD可以借用函數 INT 來表示:MOD(n, d) = n - d*INT(n/d)。
二、INDEX()函數 返回表或區域中的值或對值的引用。
函數INDEX()有兩種形式:數組形式和引用形式。
語法:INDEX(array,row_num,column_num)返回數組中指定的單元格或單元格數組的數值。
參數:Array為單元格區域或數組常數;Row_num為數組中某行的行序号,函數從該行返回數值。如果省略row_num,則必須有column_num;Column_num是數組中某列的列序号,函數從該列返回數值。如果省略column_num,則必須有row_num。
INDEX(reference,row_num,column_num,area_num)返回引用中指定單元格或單元格區域的引用。
Reference是對一個或多個單元格區域的引用,如果為引用輸入一個不連續的選定區域,必須用括号括起來。Area_num是選擇引用中的一個區域,并返回該區域中row_num和column_num的交叉區域。選中或輸入的第一個區域序号為1,第二個為2,以此類推。如果省略area_num,則INDEX函數使用區域1。
說明
1、如果同時使用了 row_num 和 column_num 參數,INDEX 将返回 row_num 和 column_num 交叉處單元格中的值。如果row_num 和 column_num 參數為小數将自動取整。這點在一會的公式中将看到。
2、如果将 row_num 或 column_num 設置為 0(零),INDEX 将分别返回整列或整行的值數組。
3、Row_num 和 column_num 必須指向數組中的某個單元格;否則,INDEX 将返回 #REF! 錯誤值。
三 ROW(),COLUMN().将返回ACTIVE單元格的行和列數,不再多說了。
下面看我們的實現過程,插入或者打開一個空白的工作表,在A1總錄入的公式:
=IF(MOD(ROW(),3)=1,工資表!A$1,IF(MOD(ROW(),3)=0,"",INDEX(工資表!$A$1:$H$10,(ROW() 4)/3,COLUMN())))
公式講解:
1 首先是一個判斷語句:共兩層嵌套,假如活動單元格A1的行數與3的餘數是1時,那麼活動單元格A1的VALUE就等于工資表!A$1單元格的值。
2如果活動單元格A1的行數與3的餘數是0時,那麼活動單元格A1的VALUE就等于空值。
3如果活動單元格A1的行數與3的餘數不是1也不是0時,麼活動單元格A1的VALUE就等于INDEX(工資表!$A$1:$H$10,(ROW() 4)/3,COLUMN())
4 INDEX(工資表!$A$1:$H$10,(ROW() 4)/3,COLUMN())講解:
①工資表!$A$1:$H$10 是取值的範圍。
②(ROW() 4)/3 要提取數值的行數,自動取整
③COLUMN() 要提取數值的列數,和活動單元格的列數相同。
好了,公式講解完成了,錄入後再把此公式橫向填充,到H列,再把A1到H1選擇上縱向填充到直到工資表的人顯示全為止,最後再刷一遍格式即可,
我們看看實際的效果吧,如下面的截圖:
非常的完美,達到了我們的要求。
也許很多朋友會有其他的辦法,是的,我這裡主要在講函數,上述的内容可以通過排序和VBA實現,這裡不做重點。
今日内容技巧提升:
1 MOD函數的用法及意義。
2 INDEX函數的用法意義
3 ROW、COLUMN函數的意義
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!