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.
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.
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.
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.
=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(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.
=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(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, |
=DDB(20000, |
=SLN(20000, |
=SYD(20000, |
| 2 | =DB(20000, |
=DDB(20000, |
=SLN(20000, |
=SYD(20000, |
| 3 | =DB(20000, |
=DDB(20000, |
=SLN(20000, |
=SYD(20000, |
| 4 | =DB(20000, |
=DDB(20000, |
=SLN(20000, |
=SYD(20000, |
| 5 | =DB(20000, |
=DDB(20000, |
=SLN(20000, |
=SYD(20000, |
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
List all Excel Formulas.