DDB function

Calculates depreciation using the double declining balance method, an accelerated depreciation approach that depreciates assets faster in early periods.

=DDB(cost, salvage, life, period, [factor])

Generate a DDB formula

Describe what you need. The generator will reach for DDB where DDB is the right tool, and tell you when it is not.

How to get a better answer
  • Name your columns by letter and by header: "column F (Net Value)" beats "the amount column".
  • State every condition, including the negatives — "not cancelled" changes the formula's shape.
  • Say where the data starts if it is not row 1, and whether it will grow.
  • Check the settings above match your spreadsheet: the wrong argument separator is a syntax error on your machine.

Arguments

How DDB reads its arguments
costrequiredsalvagerequiredliferequiredperiodrequiredfactoroptionalDDB
ArgumentRequiredDescription
costRequiredThe initial cost of the asset. Must be positive; no upper limit.
salvageRequiredThe salvage (residual) value at the end of the asset's useful life. Must be non-negative; zero or negative values return #NUM!.
lifeRequiredThe number of periods over which the asset is depreciated. Must be positive (typically 1–50 years); zero or negative returns #NUM!.
periodRequiredThe specific period for which to calculate depreciation, numbered from 1. Must be ≥ 1 and ≤ life; exceeding life returns #NUM!.
factorOptionalOptional acceleration factor (default 2 for double declining). Values > 1 accelerate; factor ≤ 0 or non-numeric returns #NUM!.

Returns

A numeric value representing the depreciation expense for the specified period.

Availability

Excel: All · Google Sheets: Supported

Worked examples

1. Calculate first-year depreciation of Finance department accounting software

DepartmentAssetCostSalvageLifePeriod
FinanceAccounting software500050051
=DDB(5000, 500, 5, 1)

Result: 2000

Finance purchased $5,000 accounting software with a 5-year useful life and $500 salvage value. DDB applies a 40% depreciation rate (2 ÷ 5 years) to the full cost in period 1, yielding $2,000. This double-declining approach front-loads the largest depreciation expense in the first year, reflecting how software often loses value most steeply upfront.

2. Calculate third-year depreciation of Sales team vehicle fleet

DepartmentAssetCostSalvageLifePeriod
SalesVehicle fleet45000500053
=DDB(45000, 5000, 5, 3)

Result: 6480

The Sales department's $45,000 vehicle fleet depreciates over 5 years. By period 3, prior depreciation has reduced the book value to $16,200 ($18,000 in year 1 + $10,800 in year 2). Period 3 applies the 40% rate to this lower base: $16,200 × 0.40 = $6,480. Notice the absolute depreciation amount decreases each year even though the percentage rate remains constant, because it applies to a shrinking book value.

3. Calculate second-year depreciation using a custom acceleration factor

DepartmentAssetCostSalvageLifeFactor
EngineeringComputer hardware12000100041.5
=DDB(12000, 1000, 4, 2, 1.5)

Result: 2812.5

Engineering's $12,000 computer hardware normally depreciates over 4 years. By default, factor = 2 would apply a 50% rate (2 ÷ 4). Here, factor = 1.5 applies a gentler 37.5% rate (1.5 ÷ 4). In period 1, depreciation is $4,500, leaving book value $7,500. Period 2 calculates $7,500 × 0.375 = $2,812.50. Custom factors let you fine-tune depreciation speed when assets don't follow the standard double-declining curve.

Common errors

Which DDB error are you seeing?
DDB returned an error#NUM!
Ensure period ≤ life. For a 5-year asset, period must be 1–5. Review your source data to confirm the correct period number before calling DDB.
#VALUE!
Convert all arguments to numeric values. Remove currency symbols and thousand separators, ensure date fields are not passed, and verify that cell references contain only numbers.
#NUM!
Ensure life is a positive integer (typically 1–50). Ensure factor is positive (default 2). If using cell references, check that they contain positive numeric values.
ErrorWhy it happensHow to fix it
#NUM!The period argument exceeds the asset's life. For example, =DDB(45000, 5000, 5, 6) tries to calculate depreciation in year 6 of a 5-year asset.Ensure period ≤ life. For a 5-year asset, period must be 1–5. Review your source data to confirm the correct period number before calling DDB.
#VALUE!One or more arguments are text, logical values, or formatted text that is not numeric. For example, =DDB("$5,000", 500, 5, 1) if cost is stored as text with currency formatting.Convert all arguments to numeric values. Remove currency symbols and thousand separators, ensure date fields are not passed, and verify that cell references contain only numbers.
#NUM!The life argument is zero, negative, or the factor argument is negative. DDB cannot calculate over zero or negative periods; for example, =DDB(5000, 500, 0, 1) or =DDB(5000, 500, 5, 1, -1).Ensure life is a positive integer (typically 1–50). Ensure factor is positive (default 2). If using cell references, check that they contain positive numeric values.

Tips and when to use something else

  • DDB front-loads depreciation in early years. If your asset loses value gradually and evenly, use SLN (straight-line depreciation) instead, which spreads total depreciation evenly across all periods.
  • The factor parameter defaults to 2. Use factor = 1 for straight-line comparison, or increase it beyond 2 if you need even more aggressive early depreciation.
  • DDB may not fully depreciate an asset to its exact salvage value. If your accounting requires the asset to reach salvage value precisely, use VDB instead, which blends DDB with straight-line to guarantee the target.
  • Always validate that period ≤ life before building formulas. Create a helper column with conditional logic to prevent out-of-range queries and make debugging easier.

Frequently asked questions

When should I use DDB instead of SLN (straight-line depreciation)?
DDB suits assets that lose value steeply early (vehicles, technology, equipment). SLN is better for stable-value assets (buildings, furniture). Tax codes in many jurisdictions also mandate or allow DDB for certain asset classes; check local rules.
Why does the dollar amount of depreciation decrease each year if the rate stays the same?
DDB applies a fixed percentage rate to the remaining book value, not to the original cost. As the book value shrinks year-over-year, the percentage of a smaller number yields a smaller dollar amount. This mimics real-world asset value decline curves.
What does the factor parameter mean, and when should I change it?
Factor controls acceleration. A factor of 2 is 'double' declining (the standard); it applies twice the straight-line rate. Use factor = 1 for straight-line, or > 2 if your asset loses value very quickly. Most users keep it at 2.
Does DDB always depreciate an asset to exactly its salvage value?
No. DDB applies a constant percentage rate, so it may overshoot or undershoot salvage value. Use VDB (variable declining balance) if you need the final book value to equal salvage value exactly.

Need a different formula?

The full generator is not scoped to one function — describe any spreadsheet problem and it will pick.

Open the formula generator

Reviewed 2026-09-17