問題的發現
[例] 假定某企業某項固定資產的原值為400,000元,預計使用年限為5年,預計淨殘值率為4%,使用雙倍餘額遞減法計算每年的折舊費用。
解:利用中文Excel 97/2000 中的內建財務函數DDB(Cost,Salvage,Life,Period,Factor) 求解。
1. 對DDB()函數作解釋。
-
Cost 為固定資產的原值
-
Salvage 為預計淨殘值(=預計殘值-預計清理費用)。系統預設值為0,即淨殘值為0
-
Life 為預計使用年限
-
Period 為第某年
-
Factor 為餘額遞減倍數。系統預設值為2,即雙倍餘額遞減。若其值為3時,就是三 倍餘額遞減
2. 使用函數
在上例中,可知:Cost=400000,Salvage=400000*40%,Life=5,Factor=2 (取預設值),為了一次計算出五年的折舊費用,使Period=A1(A1 儲存格有數值1)
在儲存格B2中輸入:=DDB(400000,400000*4%,5,a2) ,並用公式填空的方法計算出1—5年的折舊費用
3. 發現問題
由於我們第一次使用該函數,為保險起見,我們做個實驗——檢驗“累計折舊額=應計折舊總額”是否成立。在儲存格B7中求出“累計折舊總額”:=SUM(B2:B6);在儲存格B8 中求出“應計折舊總額”:=400000-400000*4%。我們發現:累計折舊額 (368896) <>應計折舊總額 (384000) ,有15104的差額,如圖:
| |
A |
B |
| 1 |
第某年 |
DDB函數下的年折舊額(萬元) |
| 2 |
1 |
¥160,000.00 |
| 3 |
2 |
¥96,000.00 |
| 4 |
3 |
¥57,600.00 |
| 5 |
4 |
¥34,560.00 |
| 6 |
5 |
¥20,736.00 |
| 7 |
累計折舊總額 |
¥368,896.00 |
| 8 |
應計折舊額 |
¥384,000.00 |
| 9 |
差額 |
¥15,104.00 |
問題的分析
其實這個問題並不是 源於 Excel 的,這是涉到會計領域的一個重要問題。
1. 遞減折舊
遞減折舊是指固定資產使用年限內折舊費用逐漸遞減的方法,雙倍餘額遞減法是遞減折舊的主要的一種方法,廣泛用於會計實務中。
A.遞減折舊的理論依據
-
一般固定資產的服務貢獻能力總是逐年遞減的
-
操作效能或效能的遞減會導致其他動作成本(如修理維護費用)的增加
-
以剩餘服務價值的現值來表示的資產價值在前期降低較多,在後期則降低較少
-
因存在著資產陳舊的可能性,使得以後期間的收入具有不確定性
-
相對於直線法,使用前期可以少繳納所得稅,相當於從國家處取得無息貸款
-
相對於直線法,使用前期可以收回較多的投資,有利于歸避資產的無形損耗
B.雙倍餘額遞減法的理論操作方法
為了在固定資產使用的前期多計一些折舊費用,後期少計一些折舊費用,使折舊費用逐年遞減,採用2/預計使用年限 作為折舊率。具體為:第某年折舊費用=該年固定資產年初價值*折舊率(不考慮淨殘值)。從數字上看,該法的確完成了“前期多計一些費用,後期少計一些費用及折舊費用逐年遞減”的要求,但該法天生的缺陷是無法在規定的年限計完所有的應計的折舊金額,這一點從數學上是可以論證的(這裡從略)。不能在規定的年限計完所有的應計的折舊金額,該費用化的資本不能費用,進入企業損益的計算,這在會計上是講不通的,違背了固定值產折舊原則和基本要求。
2. 雙倍餘額遞減法天然缺陷的彌補方案
雙倍餘額遞減法雖然存在這樣的問題,但它確實是很好的遞減折舊方案,除了使用年限總和法外,還沒有更理想(從目的和繁簡度角度)的遞減折舊方案。為了保全雙倍餘額遞減法,會計上產生了若干彌補的方案。
-
把預計使用年限中不能計提完畢的那一部分差額全都計在最後一年的折舊費用之中。(以下簡稱方案一,下同)
-
把預計使用年限中不能計提完畢的那一部分差額平均分配計入各年折舊費用之中。
-
使用雙倍餘額遞減法計算折舊費用時,在預計使用年限中的最後兩年,改用直線法計算折舊費用,即:最後兩年的折舊費用=(最後第二年年初固定資產價值-預計淨殘值)/2。許多國家的會計制度都採用了這種方案。
-
在計算每年折舊費用之前,先比較採用直線法和雙倍餘額遞減法計算的該年的折舊費用的高低。若直線法下的折舊費用低於雙倍餘額遞減法計算的折舊費用,則仍使用雙倍餘額遞減法計算折舊費用;若直線法下計算的折舊費用大於雙倍餘額遞減法下的計算結果,則該年及以後各年都採用直線法計算每年的折舊費用。
| |
A |
B |
C |
D |
E |
F |
| 1 |
第某年 |
方案一 |
方案二 |
方案三 |
方案四 |
直線法 |
| 2 |
1 |
10000.00 |
10536.87 |
10000.00 |
10000.00 |
5000.00 |
| 3 |
2 |
8000.00 |
8536.87 |
8000.00 |
8000.00 |
5000.00 |
| 4 |
3 |
6400.00 |
6936.87 |
6400.00 |
6400.00 |
5000.00 |
| 5 |
4 |
5120.00 |
5656.87 |
5120.00 |
5120.00 |
5000.00 |
| 6 |
5 |
4096.00 |
4632.87 |
4096.00 |
3413.33 |
5000.00 |
| 7 |
6 |
3276.80 |
3813.67 |
3276.80 |
3413.33 |
5000.00 |
| 8 |
7 |
2621.44 |
3158.31 |
2621.44 |
3413.33 |
5000.00 |
| 9 |
8 |
2097.15 |
2634.02 |
2097.15 |
3413.33 |
5000.00 |
| 10 |
9 |
1677.72 |
2214.59 |
4194.31 |
3413.33 |
5000.00 |
| 11 |
10 |
6710.89 |
1879.06 |
4194.30 |
3413.35 |
5000.00 |
| 12 |
累計折舊 |
50000.00 |
50000.00 |
50000.00 |
50000.00 |
50000.00 |
[例]某項固定資產的原始價值為50000元,預計使用年限是10年,採用以上四種方案計算1-10年的折舊費用。
解:解題的過程我已在上表中列示。
分析:在我們分析問題之前,先讓我們把遞減折舊法的概念及理論依據複習一下。
從上表中不難發現方案一、方案三中的某些年的折舊費用大於它們各自前些年的折舊費用,如下圖:
從上圖我們清晰發現:方案一、方案三都存在後期折舊費用“翹尾巴”的映像。
折舊費用應該逐年遞減是遞減折舊法的基本特徵,也是遞減折舊法立論的基礎。固定資產的服務水平隨著使用年數的增長而不斷降低,它為企業提供的貢獻也相應降低, 從收入與費用的配比角度看,計入損益的折舊費用也應逐年遞減。
方案二較好的解決了雙倍餘額遞減法的問題,我個人認為這是四個方案中最好的一個。雖然,有人講它採用平均分攤差額不合配比原則。但我認為,從重要性的角度看,平均攤入的費用其金額占每年應計折舊費用的比重並不大,且攤入後仍使每年的折舊費用平滑遞減(從上圖可知);再者所有的折舊方法都帶有假設性質,只要能自圓其說就行。
方案四也較好的解決了雙倍餘額遞減法的問題,為了說明的方便,在列 F 中使了用直線法。當計算折舊費用時,我們發現傳統雙倍餘額遞減法下第五年的折舊費用=4096.00<直線法下的折舊費用=5000.00,於是從第五年開始改用直線法計算折舊費用,避免了折舊費用“翹尾巴”的局面,但在本例中竟然有6各個年頭在使用直線法計算折舊費用,這還能叫“雙倍餘額遞減法”嗎?
由於財務會計要受帳戶規則及會計制度的約束,我國既然規定採用方案三,我們在平時的會計核算時就應該無條件使用這種方案。
我們也應注意到,並不是所有採用雙倍餘額遞減法加最後兩年改用直線法的案例都會出現折舊費用“翹尾巴”的現象,大多數情況下使用雙倍餘額遞減法加最後兩年改用直線法計算出的折舊費用是正常的。經驗告訴我們,當預計使用年限較長、固定資產價值較小時會出現這種折舊費用“翹尾巴”的現象。然而,凡採用雙倍餘額遞減法計算固定資產的折舊費用的企業或部門,一般都使用處於技術進步較快、無形損耗較大的領域,其資產的價值一般較大、使用年限一般較短。
3. DDB()函數不能正確求解的原因
DDB()函數在固定資產的使用年限中一律使用2/預計使用年限 作為折舊率,而沒有考慮我們在上文論及的問題。
DDB()函數不能正確求解,可能是微軟公司的專家對會計學不太精通,只知其一,不知其二;也可能是對於雙倍餘額遞減法存在問題的解決方案拿捏不定,於是 Excel 為大家留下了各自的思考空間。我更贊同後一種解釋。
問題的解決
這兒我們只對雙倍餘額遞減法加最後兩年改用直線法進行處理。
1. 思路
無論何種原因造成DDB()函數不能正常服務,我們只有兩種選擇,其一是不用DDB()函數,其二是設法解決問題。我們不做“孱頭”。
即然是函數出了問題,那麼我們就從函數入手——自訂一個函數。
DDB() 函數在計算除最後兩年折舊外的其他年份中,其計算值是正確的,因此,在計算第一年至(預計使用年限-3)時, DDB() 函數是可以被我們利用的。
2. 在Excel 97自訂函數:雙倍餘額遞減法(Cost,Life,Period,Salvage,Fy)
-
雙倍餘額遞減法 為函數名
-
Cost 為固定資產的原值
-
Life 為預計使用年限
-
Period 為第某年
-
Salvage 為預計殘值。系統預設值為0,即殘值為0
-
Fy 為預計清理費用。系統預設值為0,即清理費用為0
3. 雙倍餘額遞減法()函數的功能
按我國對雙倍餘額遞減法的有關解釋,編製能正確計算每年折舊費用的自訂函數
每年折舊費用保留兩位小數,並在最後一年調整尾差。
4. 雙倍餘額遞減法()函數的原始碼
Function 雙倍餘額遞減法(ByVal Cost As Double, ByVal Life As Integer, ByVal Period As Integer,_ Optional Salvage As Double = 0, Optional Fy As Double = 0) As Double
Dim zmcost As Double, bqdb As Double, sumdb As Double, x As Double, y As Double
Dim life1 As Integer, n As Integer
sumdb = 0
life1 = Life - 2
If (Period < life1 Or Period = life1) Then
雙倍餘額遞減法 = Application.Round(Application.DDB(Cost, , Life, Period), 2)
ElseIf (Period > life1 And Period <= Life) Then
For n = 1 To life1 Step 1
bqdb = Application.Round(Application.DDB(Cost, , Life, n), 2)
sumdb = sumdb + bqdb
Next n
zmcost = Cost - sumdb
bqdb = Application.Round((zmcost - Salvage + Fy) / 2, 2)
If Period = Life And ((bqdb * 2 + sumdb) <> (Cost - Salvage + Fy)) Then
雙倍餘額遞減法 = Cost - Salvage + Fy - sumdb - bqdb
Else
雙倍餘額遞減法 = bqdb
End If
End If
End Function
5.對原始碼的分析
-
代碼是以Visual Basic語言編寫的,因此閱讀者要有該語言的基礎。
-
代碼對最後兩年該為直線法的處理並不複雜:當Period<= (Life-2) 時,調用 Excel 97/2000 中的 DDB() 函數 ,即:Application.DDB();當 Life>life-2 時,先把 [1 , Life-3]的累計折舊費用之和(sumdb)計算出來,再計算最後兩年的折舊費用=(Cost-Salvage-+Fy-sumdb)/2
-
代碼的其他精力花在了保留兩位小數和最後一年調整尾差上。
-
不足之處,函數不能直接返回¥#,##0.00格式。