返回使用双倍余额递减法或您指定的某些其他方法指定资产在特定时间段内的折旧的 Double。
语法
DDB (cost, salvage, life, period* [, factor] )
DDB 函数语法具有以下参数:
| 参数 | 说明 |
|---|---|
| 成本 | 必需。 Double 指定资产的初始成本。 |
| Salvage | 必需。 双重 指定资产在其使用寿命结束时的价值。 |
| 生活 | 必需。 双精度 指定资产的使用寿命长度。 |
| 句点 | 必需。 双重 指定计算资产折旧的时期。 |
| 因素 | 可选。 指定余额递减速率的变体。 如果省略,则假定 2 (双递减法) 。 |
备注
双倍余额递减法以加速的比率计算折旧。 折旧在第一阶段是最高的,在后继阶段中会减少。
寿命和周期参数必须使用相同的单位表示。 例如,如果 生命 以月为单位,则 周期 也必须以月为单位。 所有参数必须为正数。
DDB 函数使用以下公式计算给定时期的折旧费:
折旧/ 期间 = ( (成本 – 残) * 系数) / 寿命
示例
注意
下面的示例演示了在Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个术语。
本示例使用 DDB 函数返回指定期限内的资产的折旧值,给定初始成本 () InitCost 、资产使用寿命结束时的残值 (SalvageVal) 、资产的总寿命(以 () 年为单位 LifeTime )以及 (Depr) 计算折旧的年限(以年为单位)。
Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr
Const YRMOS = 12 ' Number of months in a year.
Fmt = "###,##0.00"
InitCost = InputBox("What's the initial cost of the asset?")
SalvageVal = InputBox("Enter the asset's value at end of its life.")
MonthLife = InputBox("What's the asset's useful life in months?")
Do While MonthLife < YRMOS ' Ensure period is >= 1 year.
MsgBox "Asset life must be a year or more."
MonthLife = InputBox("What's the asset's useful life in months?")
Loop
LifeTime = MonthLife / YRMOS ' Convert months to years.
If LifeTime <> Int(MonthLife / YRMOS) Then
LifeTime = Int(LifeTime + 1) ' Round up to nearest year.
End If
DepYear = CInt(InputBox("Enter year for depreciation calculation."))
Do While DepYear < 1 Or DepYear > LifeTime
MsgBox "You must enter at least 1 but not more than " & LifeTime
DepYear = InputBox("Enter year for depreciation calculation.")
Loop
Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)
MsgBox "The depreciation for year " & DepYear & " is " & _
Format(Depr, Fmt) & "."