Returns the depreciation of an asset for a specified period using the double-declining balance method or another specified method. Calculates accelerated depreciation by applying double (2x) the straight-line rate to the declining book value. Provides maximum acceleration among common depreciation methods. Essential for tax optimization, fixed asset accounting, and financial modeling when maximum early-year depreciation is desired.
Master the fundamentals of Excel DDB function
The DDB (Double Declining Balance) function calculates depreciation using the double declining balance method, which applies double (2x) the straight-line depreciation rate to the declining book value of the asset each period. This provides maximum accelerated depreciation among common methods, with the highest depreciation in early years and rapidly declining amounts in later years. DDB uses a rate of 2/life applied to the remaining book value. When calculated depreciation would cause book value to fall below salvage value, DDB automatically switches to straight-line depreciation for remaining periods to ensure the book value reaches exactly the salvage value. This method is ideal for tax optimization when maximum early-year deductions are desired, and for assets that lose value most rapidly in early years.
DDB uses 2 × (1/life) rate. For 10-year life: Rate = 2 × (1/10) = 20%. This is double the straight-line rate (10%), applied to declining balance.
DDB provides highest early-year depreciation among common methods. Higher than SYD, DB, and much higher than SLN. Maximizes tax benefits.
Depreciation = Rate × Beginning Book Value. Each period uses remaining book value. Book value decreases rapidly, so depreciation decreases rapidly.
When DDB would depreciate below salvage, function switches to straight-line for remaining periods. Ensures book value reaches exactly salvage value.
Factor parameter allows custom rates: 1.5 for 150% declining balance, 3 for triple declining balance. Default is 2 for double declining balance.
Maximum early-year depreciation provides largest tax deductions sooner, improving cash flow and reducing current tax liability significantly.
Function-specific parameters
Function-specific return type
Maximize early-year tax deductions with maximum acceleration
Prepare maximum accelerated depreciation schedules
Calculate maximum accelerated depreciation for assets
Plan maximum tax savings from accelerated depreciation
Analyze maximum depreciation expense patterns
Track maximum accelerated asset depreciation
Exact matching required
Returns numeric position
Handles missing text gracefully
=DDB(cost, salvage, life, period, factor)The initial cost of the asset. Must be positive. This is the original purchase price or acquisition cost of the asset.
The value of the asset at the end of its useful life (salvage value, scrap value, or residual value). Must be >= 0. Typically lower than cost.
The number of periods over which the asset is depreciated (useful life). Must be positive. Expressed in same units as period.
The period for which depreciation is calculated. Must be between 1 and life. Period numbering starts at 1 for the first period.
The rate at which the balance declines. Default is 2 (double declining balance). Use 1.5 for 150% declining balance, 3 for triple declining balance, etc.
The depreciation expense for the specified period (positive value)
Description: Calculates double declining balance depreciation for a period
Calculate depreciation for first year using double declining balance
Returns $10,000 for year 1. DDB uses 2x straight-line rate (2/10 = 20%), applied to $50,000 cost = $10,000. Maximum acceleration.
Using DDB function in VBA through WorksheetFunction
Sub DDBExample()
Dim result As Double
Dim cost As Double, salvage As Double, life As Integer
Dim period As Integer
cost = 50000
salvage = 5000
life = 10
period = 1
result = Application.WorksheetFunction.DDb(cost, salvage, life, period)
Range("A1").Value = result
Range("A1").NumberFormat = "$#,##0.00"
MsgBox "First year depreciation: quot; & Format(result, "#,##0.00")
End Sub
' Calculate depreciation for multiple periods
Sub CalculateDepreciationSchedule()
Dim cost As Double, salvage As Double, life As Integer
Dim i As Integer
Dim depreciation As Double
cost = 50000
salvage = 5000
life = 10
For i = 1 To life
depreciation = Application.WorksheetFunction.DDb(cost, salvage, life, i)
Range("A" & i).Value = "Year " & i
Range("B" & i).Value = depreciation
Range("B" & i).NumberFormat = "$#,##0.00"
Next i
End Sub
' Build complete depreciation schedule
Sub BuildDepreciationSchedule()
Dim cost As Double, salvage As Double, life As Integer
Dim i As Integer
Dim depreciation As Double
Dim accumulated As Double
Dim bookValue As Double
cost = 50000
salvage = 5000
life = 10
accumulated = 0
bookValue = cost
For i = 1 To life
depreciation = Application.WorksheetFunction.DDb(cost, salvage, life, i)
accumulated = accumulated + depreciation
bookValue = bookValue - depreciation
Range("A" & i + 1).Value = i
Range("B" & i + 1).Value = depreciation
Range("C" & i + 1).Value = accumulated
Range("D" & i + 1).Value = bookValue
Range("B" & i + 1).NumberFormat = "$#,##0.00"
Range("C" & i + 1).NumberFormat = "$#,##0.00"
Range("D" & i + 1).NumberFormat = "$#,##0.00"
Next i
End Sub
' Calculate with custom factor (150% declining balance)
Sub CalculateWithFactor()
Dim cost As Double, salvage As Double, life As Integer
Dim factor As Double
Dim depreciation As Double
cost = 50000
salvage = 5000
life = 10
factor = 1.5 ' 150% declining balance
depreciation = Application.WorksheetFunction.DDb(cost, salvage, life, 1, factor)
Range("A1").Value = depreciation
Range("A1").NumberFormat = "$#,##0.00"
MsgBox "150% declining balance (Year 1): quot; & Format(depreciation, "#,##0.00")
End SubMaximize early-year tax deductions with maximum acceleration
Build maximum accelerated depreciation schedule
Calculate maximum accelerated depreciation for reports
Plan maximum tax savings from accelerated depreciation
Track maximum accelerated asset depreciation
Analyze maximum depreciation expense patterns
DDB returns #NUM! error
=DDB(50000, 5000, 10, 1)Solution: Check: 1) period >= 1 and period <= life, 2) life > 0 (cannot be zero or negative), 3) factor > 0 (if provided), 4) Salvage >= 0. Verify all numeric values are valid.
DDB returns constant or increasing values across periods
=DDB(50000, 5000, 10, period)Solution: Ensure period parameter increments correctly. DDB should decrease rapidly as period increases. Verify period is correctly referencing period number (1, 2, 3...) not constant value.
DDB returns values that seem incorrect
=DDB(50000, 5000, 10, 1)Solution: Verify: 1) Cost and salvage are correct, 2) Life is in correct units, 3) Period is correct period number. DDB uses 2x straight-line rate - check rate calculation.
DDB returns #VALUE! error
=DDB(A1, B1, C1, D1, E1)Solution: Non-numeric values in parameters. Check: 1) All parameters are numbers, 2) Cell references contain numeric values, 3) No text in cost, salvage, life, period, or factor. Verify inputs are valid numbers.
Calculated book value goes below salvage value
=DDB(50000, 5000, 10, 10)Solution: DDB automatically switches to straight-line when needed to protect salvage value. This is normal behavior. Verify final book value equals salvage value.