ZetCode

Excel DB and DDB Functions

last modified October 5, 2026

The DB and DDB functions are Excel's declining-balance depreciation functions. DB uses the fixed-declining balance method, while DDB uses the double-declining balance method with an optional factor. Both spread the cost of an asset across its useful life but at very different rates. This tutorial explains the exact algorithms, works through verified examples, and shows how the two methods compare with straight-line and sum-of-years-digits depreciation.

DB and DDB Function Basics

Depreciation allocates the cost of an asset over the periods that benefit from it. Declining-balance methods charge more in the early periods and less later, which matches assets that lose value quickly. DB applies one fixed rate every period, while DDB applies a rate based on the remaining book value.

Component Description
Function Names DB, DDB
Syntax =DB(cost, salvage, life, period, [month]) and =DDB(cost, salvage, life, period, [factor])
Required Arguments cost, salvage, life, period
Optional Arguments month (DB), factor (DDB)
Return Value Depreciation amount for the selected period

This table summarizes both functions. They share the first four arguments and differ only in their optional argument: month for DB and factor for DDB.

Argument Meaning
cost The initial cost of the asset.
salvage The value at the end of depreciation, called the salvage value. It may be zero but cannot be negative.
life The number of periods over which the asset is depreciated. It must be positive.
period The period you want the depreciation for. It uses the same time unit as life and starts at 1.
month DB only. The number of months in the first year, from 1 to 12. It defaults to 12, meaning a full first year.
factor DDB only. The rate at which the balance declines. It defaults to 2 for the double-declining method.

life and period must use the same unit, so a life in years requires a period in years, and a life in months requires a period in months. Neither function takes the book value below the salvage value.

Fixed-Declining vs Double-Declining Balance

DB derives a single rate from the cost, salvage, and life, then applies that rate to the declining book value. The rate is rounded to three decimal places, which is exactly what Excel does.

DB fixed rate
rate = 1 - (salvage / cost) ^ (1 / life)

The first period is prorated by the month argument, and the final period is prorated by 12 - month. Every other period charges (cost - total depreciation so far) * rate. Because the rate is rounded, the book value usually ends a few cents away from salvage.

DB period depreciation
first period: cost * rate * month / 12
other periods: (cost - total depreciation) * rate
last period: (cost - total depreciation) * rate * (12 - month) / 12

DDB does not derive a rate from salvage. It charges a fixed fraction of the remaining book value, and a Min function stops the depreciation once the book value reaches salvage.

DDB period depreciation
Min((cost - total depreciation) * (factor / life),
    (cost - salvage - total depreciation))

The second expression inside Min is the remaining depreciable amount. It caps the charge so an asset is never written below its salvage value. This is why DDB can show a much smaller amount in its final years.

Basic DB Example

This example calculates first-year depreciation for a $10,000 asset with a $1,000 salvage value and a five-year life.

Basic DB formula
=DB(10000, 1000, 5, 1)

The fixed rate is 1 - (1000/10000)^(1/5), which rounds to 0.369. Multiplying the cost by the rate gives 10000 * 0.369 = 3690, so the result is $3,690.00. Because month is omitted, the first period is a full 12 months.

DB with a Partial First Year

The optional month argument prorates the first period. Suppose an asset is placed in service with only four months left in the accounting year. Passing month as 4 charges four twelfths of the first-year depreciation.

A B
Cost 15000
Salvage 2000
Life 6
Period 1
Month 4
Depreciation =DB(B1, B2, B3, B4, B5)

The table shows the inputs in B1:B5 and the formula in B6. The rate works out to 0.285, so the first period is 15000 * 0.285 * 4 / 12.

DB with a partial first year
=DB(15000, 2000, 6, 1, 4)

The result is $1,425.00. A shortened first year adds a partial final period: with a life of 6 and month of 4, DB produces seven periods, and period 7 is multiplied by (12 - 4) / 12.

Basic DDB Example

This example uses the default factor of 2, which doubles the straight-line rate. The asset costs $8,000, has a $500 salvage value, and a five-year life.

Basic DDB formula
=DDB(8000, 500, 5, 3)

Each period charges 2/5, or 40%, of the remaining book value. Period 1 is 8000 * 0.4 = 3200, period 2 is 4800 * 0.4 = 1920, and period 3 is 2880 * 0.4 = 1152, so the result is $1,152.00. The charge is larger than the fixed-declining method would produce in the same period.

DDB with a Custom Factor

The optional factor argument replaces the default 2. A factor of 1.5 is called 150% declining balance and depreciates more slowly than the double-declining method.

A B
Cost 12000
Salvage 1500
Life 4
Period 2
Factor 1.5
Depreciation =DDB(B1, B2, B3, B4, B5)

The table stores the inputs in B1:B5 and the formula in B6. Period 1 charges 12000 * 1.5 / 4 = 4500, leaving a book value of 7,500. Period 2 charges 7500 * 1.5 / 4.

DDB with a custom factor
=DDB(12000, 1500, 4, 2, 1.5)

The result is $2,812.50. The remaining depreciable amount after period 1 is 6,000, so the calculated 2,812.50 is below the cap and no clamping occurs.

Building a Depreciation Schedule

Running the function once per period builds a full schedule. This table uses a $20,000 asset with a $2,000 salvage value and a five-year life, and it adds straight-line (SLN) and sum-of-years-digits (SYD) for comparison.

Year DB DDB SLN SYD
1 =DB(20000,2000,5,1) =DDB(20000,2000,5,1) =SLN(20000,2000,5) =SYD(20000,2000,5,1)
2 =DB(20000,2000,5,2) =DDB(20000,2000,5,2) =SLN(20000,2000,5) =SYD(20000,2000,5,2)
3 =DB(20000,2000,5,3) =DDB(20000,2000,5,3) =SLN(20000,2000,5) =SYD(20000,2000,5,3)
4 =DB(20000,2000,5,4) =DDB(20000,2000,5,4) =SLN(20000,2000,5) =SYD(20000,2000,5,4)
5 =DB(20000,2000,5,5) =DDB(20000,2000,5,5) =SLN(20000,2000,5) =SYD(20000,2000,5,5)

The table shows the formulas, and the results they return are listed below.

Year DB DDB SLN SYD
1 7380.00 8000.00 3600.00 6000.00
2 4656.78 4800.00 3600.00 4800.00
3 2938.43 2880.00 3600.00 3600.00
4 1854.15 1728.00 3600.00 2400.00
5 1169.97 592.00 3600.00 1200.00

DDB charges the most in year 1, then falls below DB in year 3 once its book value is small. In year 5 the Min clamp limits DDB to 592, the exact amount needed to reach the 2,000 salvage value. SLN spreads the same total evenly at 3,600 per year, and SYD accelerates at a gentler, predictable pace.

Comparing DB, DDB, SLN, and SYD

DB and DDB are both accelerated, but they differ in how the rate is set. DB fixes the rate from cost, salvage, and life, so the percentage charge is constant while the dollar amount declines. DDB ignores salvage when setting the rate and instead caps the charge with the remaining depreciable amount.

SLN is the straight-line method, the simplest of the four, with an equal charge each period. SYD is sum-of-years-digits, which accelerates using a declining fraction of the depreciable base. Use DB or DDB when an asset loses value fastest early, SYD for a moderate acceleration, and SLN when the benefit is spread evenly.

DB and DDB Errors and Troubleshooting

Cause Symptom Fix
Period is greater than life #NUM! error Use a period from 1 to life; DB also accepts life + 1
Life is zero or negative #NUM! error Life must be a positive number
Period is zero or negative #NUM! error The first period is 1
Month is outside 1 to 12 #NUM! error Use a month value from 1 to 12, or omit it
Factor is zero or negative #NUM! error Factor must be positive; omit it to use 2
Salvage is negative, or cost is zero #NUM! error Use non-negative cost and salvage values
An argument is text #VALUE! error Make sure the referenced cells contain numbers
Depreciation seems too small in late periods Amount is capped DDB stops at salvage; use VDB or SLN to continue a schedule

Most errors come from a period that falls outside the allowed range or from a non-positive life. Remember that DB and DDB treat the final periods differently, and that a shortened first year creates an extra partial period in DB.

The DB and DDB functions give you two dependable ways to model declining-balance depreciation in Excel. DB derives a fixed rate from cost, salvage, and life and rounds it to three decimals, while DDB applies the declining rate directly and clamps each charge so the book value never falls below salvage. Verify the period range, keep life and period in the same units, and use the month argument to model a partial first year. With these details in hand you can build accurate depreciation schedules and choose the method that best matches your accounting or tax needs.

Author

My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.

List all Excel Formulas.