在企業財務工作中,每個財務週期都要製作資產負債表,週期分為月度、季度、年度。季度報表可由月度報表合併得來,年度報表可由季度報表合併而來。有些大企業有許多部門,各部門也有資產負債表,總公司的資產負債表可由各部門的合併得來。如果由人工來進行這種合併工作,不僅煩瑣,還易出錯。如果使用程式自動完成這種工作就會既高效又正確。本文將介紹 esProc SPL 編寫的資產負債表合併程式碼示例。esProc 是專業的資料計算引擎,SPL 中提供了完善的 Excel 檔案讀寫函式,做資產負債表合併非常容易。
資產負債表通常如下圖:
表中紅色字型單元格是由其它單元格資料計算得來的,合併時不用考慮這些格,只需合併黑色字型單元格的資料。
按時段合併時,合併報表的期初數為第一個時段的期初數,期末數為最後一個時段的期末數。如用1、2、3月的資產負債表合併一季度的報表時,期初數為1月的期初數,期末數為3月的期末數。
SPL程式碼:
A | B | |
---|---|---|
1 | =file(“e:/資產負債表/1月.xlsx”).xlsopen() | |
2 | =file(“e: /資產負債表/3月.xlsx”).xlsopen() | |
3 | =file(“e: /資產負債表/一季度.xlsx”) | |
4 | [C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C20,C21,C24,C25,C27,C29,C30,C31,C34,C35,C36,C40,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F22,F23,F24,F25,F26,F29,F33,F34,F36,F37,F38,F39] | |
5 | for A4 | =A2.xlscell(A5,1) |
6 | =A1.xlscell(A5,1;B5) | |
7 | =A3.xlswrite(A1) |
A1 開啟1月份的資產負債表
A2 開啟3月份的資產負債表
A3 指定合併後的資產負債表檔名
A4 列出要讀取期末數的單元格名稱
A5-B6 迴圈讀取3月表中A4指定的單元格的期末數,並寫入到1月表中的對應格
A7 將合併後的A1儲存到A3指定的Excel合併檔案中
合併不同部門時,合併報表的期初數為各部門期初數之和,期末數也為各部門期末數之和。
SPL程式碼示例:
A | B | C | |
---|---|---|---|
1 | [e:/資產負債表/部門1.xlsx,e:/資產負債表/部門2.xlsx,e:/資產負債表/部門3.xlsx] | ||
2 | =file(“e:/資產負債表/公司總表.xlsx”) | ||
3 | =A1.(file(~).xlsopen()) | ||
4 | [B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B20,B21,B24,B25,B27,B29,B30,B31,B34,B35,B36,B40,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C20,C21,C24,C25,C27,C29,C30,C31,C34,C35,C36,C40,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E22,E23,E24,E25,E26,E29,E33,E34,E36,E37,E38,E39,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F22,F23,F24,F25,F26,F29,F33,F34,F36,F37,F38,F39] | ||
5 | for A4 | >v=0 | |
6 | for A3 | =B6.xlscell(A5,1) | |
7 | >v+=if(C6==null,0,float(C6)) | ||
8 | if v==0 | >A3(1).xlscell(A5,1;null) | |
9 | else | >A3(1).xlscell(A5,1;string(v)) | |
10 | =A2.xlswrite(A3(1)) |
A1 列出各部門資產負債表檔名
A2 指定合併後的資產負債表檔名
A3 開啟各部門資產負債表檔案
A4 列出要讀取資料的單元格名稱
A5-C9 迴圈要讀取的單元格,從各部門表中讀取當前格資料(沒填計0),並累加到變數v,將累加後的v寫入到第一個部門表的對應格中(v為0時將單元格置空)。
A10 將儲存了合併後值的第一部門表儲存到A2指定的Excel合併檔案中
本作品採用《CC 協議》,轉載必須註明作者和本文連結