張永祿
摘要:在應用Excel進行會計核算的小微企業(yè),其記賬憑證數據以二維表的形式存儲于專門的工作表中。這種存儲方式符合第一范式的要求,因而對于高效、準確地進行分類計算,快速生成賬簿文件和編制會計報表極為便利,但也給會計核算人員帶來新的技術難題。將二維袁形式存儲的記賬憑證數據,準確地提取到符合國家標準歸檔格式的記賬憑證打印模板中,供紙質打印輸出存檔便是其中之一。通過利用功能相對獨立的多個工作袁函數配合使用,構造打印模板的單元公式,能有效解決這一技術難題。
關鍵詞:數據源表;數據提?。还?;打印模板;會計檔案
中圖分類號:TP37 文獻標識碼:A 文章編號:1009-3044(2017)18-0201-02
1問題的提出
使用Excel進行會計核算的小微企業(yè),其記賬憑證數據是存儲在二維表中的,而《會計檔案管理辦法》要求輸出符合國家標準歸檔格式的記賬憑證。因此將二維表形式存儲的記賬憑i正數據以標準記賬憑證格式打印輸出,以滿足會計檔案管理的需要,是這些小微企業(yè)的會計核算人員必須解決的技術難題。在設計出符合國家標準歸檔格式的記賬憑證打印模板的基礎上,將多個工作表函數配合使用,構造單元的“數據驗證”公式或取數公式,可解決這一難題。完成公式的構造后,可以實現在指定單元輸入需要打印的記賬憑證編號后,檢索該編號是否存在于記賬憑證表中,如果存在,將該憑證編號對應的日期、附單據數、摘要、會計科目名稱、借貸方金額提取到打印模板的對應單元中,供打印輸出;如果不存在,則禁止輸入,并彈出錯誤提示信息,要求用戶輸入有效的記賬憑證編號,直至輸入有效的記賬憑證編號為止。
2數據源表(記賬憑證工作表)及打印模板的數據結構及格式
小微企業(yè)使用的記賬憑證工作表項目構成,應符合國家標準歸檔格式的要求。包括憑證編號、填制日期、附單據數、摘要、會計科目、借方金額、貸方金額等主要內容。記賬憑證工作表的項目構成與示例數據,以及打印模板格式如圖1、圖2所示。
3處理邏輯及實現技術
3.1區(qū)域名稱的定義
為了公式直觀易讀,同時也便于公式的構造,先對記賬憑證表的數據區(qū)域進行命名。(本例的數據區(qū)域從第3行開始至300行止,日常應用中應根據實際情況確定區(qū)域范圍)
1.將A1單元命名為“年”。
2.將A3:A300區(qū)域命名為“月”。
3.將B3:B300區(qū)域命名為“日”。
4.將C3:C300區(qū)域命名為“憑證編號”。
5.將D3:D300區(qū)域命名為“摘要”。
6.將F3:F300區(qū)域命名為“科目名稱”。
7.將G3:G300區(qū)域命名為“借方金額”。
8.將H3:H300區(qū)域命名為“貸方金額”。
9.將13:1300區(qū)域命名為“附單據數”。
3.2記賬憑證編號的檢測與“數據驗證”設置
1)允許條件公式的構造在記賬憑證打印模板的B2單元中輸入記賬憑證編號時,需要檢測輸入的編號在記賬憑證表的C3:C300區(qū)域,即“憑證編號”區(qū)域中是否存在,如果不存在,則禁止輸入。允許單元數據輸入由“數據驗證”(在Excel2010及之前的版本稱為“數據有效性”)功能實現,通過返回B2單元的數據在“憑證編號”區(qū)域中的位置來檢測輸人的憑證編號是否存在。在B2單元“數據驗證”中設置自定義公式:=NOT(ISNA(MATCH($B$2,憑證編號,0)))。該公式先用MATCH函數檢測B2單元數據在“憑證編號”區(qū)域的位置,然后用ISNA函數檢測MATCH函數返回的值是否為“#N/A”,若返回TRUE,說明B2單元數據在“憑證編號”區(qū)域中不存在;若返回FALSE,說明B2單元數據在“憑證編號”區(qū)域中存在。檢測結果為TRUE時不允許輸入,為FALSE時允許輸入,與要求正好相反,因此用NOT函數對檢測的結果求反。
2)錯誤提示信息的設置
將B2單元“數據驗證”的“出錯警告”警告樣式設置為“停止”,“標題”文字設置為“錯誤”,“錯誤信息”的文字設置為“憑證編號有誤,請核對后重新輸入!”。達到禁止輸入無效憑證編號,且在用戶輸入無效記賬憑證編號時彈出提示信息的目的。
3.3單元取數邏輯與公式的構造
由于打印模板數據來源于記賬憑證工作表,因此在打印模板的記賬憑證編號數據單元(本例為B2)輸入編號后,先用MATCH函數在記賬憑證工作表的記賬憑證區(qū)域(已定義為“憑證編號”)中定位該編號第一條記錄的行次,再用INDEX函數返回該行次對應的其它數據項內容,完成該編號第一條打印數據的生成。用公式表示:=INDEX(返回指定數據項內容的區(qū)域,MATCH($B$2,憑證編號,0))。
除填制日期“年”、“月”、“日”及“附單據數”只需提取指定憑證編號在“記賬憑證表”對應的第一條記錄外,每一個記賬憑證編號都至少對應2條以上的記錄(“有借必有貸,借貸必相等”),所以其它數據項在提取第一條記錄后,還需要繼續(xù)檢測下一條記錄的記賬憑證編號與打印模板B2單元輸入的數據是否一致,以確定是否將記錄提取到模板中的相應單元。也就是說,若檢測到的憑證編號與B2單元一致,就提取該條記錄的相關數據到打印模板中,否則返回空。
由于下一條記錄的行次值等于本條記錄的行次值加1,因此每一個指定的憑證編號從第2條記錄開始,需在MATCH函數的計算結果后依次加1,2,3……,以保證提取到指定憑證編號的第2,3,4……條記錄。為在進行公式填充時能動態(tài)加數,可以用獲取行次值的ROW函數減去打印模板工作表第一條記錄行次值(本例為41的辦法實現。
3.3.1填制日期及“附單據數”的單元公式
1)“年”數據單元(D2)公式:=IF($B$2="","",年)。endprint
2)“月”數據單元(F2)公式:=IF($B$2="","",INDEX(月,MATCH($B$2,憑證編號,0)))。
3)“日”數據單元(H2)公式:=IF($B$2="","",INDEx(日,MATCH($B$2,憑證編號,0)))。
4)“附單據數”數據單元(12)公式:=IF(B2="","","附單據張數:”&INDEX(附單據數,MATCH($B$2,憑證編號,0)))。
3.3.2其它數據項的單元公式
1)“摘要”數據單元(A4~A13)公式:=IF(ISNA(MATCH($B$2,憑證編號,0)),"",IFONDEX(憑證編號,MATCH($B$2,憑證編號,0)+ROW()-4)=$B$2,INDEX(摘要,MATCH($B$2,憑證編號,0)+ROW0-4),""))。
2)“科目名稱”數據單元(C4~C13)公式:=IF(ISNA(MATCH($B$2,憑證編號,0)),"",IF(INDEX(憑證編號,MATCH($B$2,憑證編號,0)+ROW0-4)=$B$2,INDEX(科目名稱,MATCH($B$2,憑證編號,0)+ROW0-4),""))。
3)“借方金額”數據單元(13~113)公式:=IF(ISNA(MATCH($B$2,憑證編號,0)),"",IF(INDEX(憑證編號,MATCH($B$2,憑證編號,0)+ROW()-4)=$B$2,INDEX(借方金額,MATCH($B$2,憑證編號,0)+ROW()-4),""))。
4)“貸方金額”數據單元(J3~J13)公式:=IF(ISNA(MATCH($B$2,憑證編號,0)),"",IF(INDEX(憑證編號,MATCH($B$2,憑證編號,0)+ROW()-4)=$B$2,INDEX(貸方金額,MATCH($B$2,憑證編號,0)+ROW()-4),""))。
上述4個公式中的表達式"INDEX(憑證編號,MATCH($B$2,憑證編號,0)+ROW()-4)=$B$2”用于檢測記賬憑證工作表中的憑證編號與打印模板的B2單元是否一致;表達式“ISNA(MATCH($B$2,憑證編號,0))”用來檢測是否輸入了記賬憑證工作表中不存在的憑證編號。
5)“借方金額合計”數據單元(I14)公式:=SUM(I4:I13)。
6)“貸方金額合計”數據單元(J14)公式:=SUM(J4:J13)。
4結束語
通過MATCH函數定位指定憑證編號在記賬憑證表中的位置,進而用INDEX函數返回記賬憑證表中指定憑證編號對應的各項數據,輔之以IF、ISNA、NOT、ROW等工作表函數進行容錯處理,在符合標準歸檔格式記賬憑證模板的相應單元中進行“數據驗證”設置或構造取數公式,實現了基于Excel數據源的記賬憑證打印輸出。在滿足高效、準確地處理會計數據、產生會計信息的同時,也滿足了紙質記賬憑證打印輸出的會計檔案管理需求。endprint