VDB function

VDB calculates depreciation of an asset using the declining balance method, with an optional switch to straight-line depreciation when more advantageous.

=VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch])

Generate a VDB formula

Describe what you need. The generator will reach for VDB where VDB 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 VDB reads its arguments
costrequiredsalvagerequiredliferequiredstart_periodrequiredend_periodrequiredfactoroptionalno_switchoptionalVDB
ArgumentRequiredDescription
costRequiredThe initial purchase cost or total value of the asset; must be a positive number.
salvageRequiredThe salvage or residual value at the end of the asset's useful life; must be non-negative and less than cost.
lifeRequiredThe total number of periods over which the asset is depreciated; must be a positive whole number.
start_periodRequiredThe first period to include in the calculation; must be at least 1 and not exceed end_period.
end_periodRequiredThe last period to include in the calculation; must be at least start_period and at most equal to life.
factorOptionalThe multiplier determining how fast the balance declines; typically 2 for double declining balance method, defaults to 2 if omitted.
no_switchOptionalIf TRUE, forces VDB to use declining balance for the entire life; if FALSE or omitted, VDB automatically switches to straight-line depreciation when it yields higher values.

Returns

A number representing the depreciation value for the specified period range.

Availability

Excel: All · Google Sheets: Supported

Worked examples

1. Calculate depreciation loss in the first assessment period

StudentSubjectAssignmentScoreMax Score
AlexMathQuiz 185100
AlexMathQuiz 278100
AlexMathMidterm92100
AlexMathQuiz 388100
AlexMathFinal95100
=VDB(500, 50, 5, 1, 1)

Result: 200

The total possible grade value (500 points across 5 assignments) is treated as an asset with salvage value 50. Using the declining balance method with factor 2, the first assessment period accounts for 40% depreciation, yielding 500 × 0.40 = 200 points of value decline.

2. Calculate cumulative depreciation through the midterm

StudentSubjectAssignmentScoreMax Score
AlexMathQuiz 185100
AlexMathQuiz 278100
AlexMathMidterm92100
AlexMathQuiz 388100
AlexMathFinal95100
=VDB(500, 50, 5, 1, 3)

Result: 392

By extending end_period to 3, this sums the depreciation across the first three assessments. After period 1 ($200 depreciation), period 2 depreciates the remaining $300 at 40%, yielding $120. Period 3 depreciates $180 at 40%, adding $72. Total: 200 + 120 + 72 = 392.

3. Calculate depreciation for final assessment periods only

StudentSubjectAssignmentScoreMax Score
AlexMathQuiz 185100
AlexMathQuiz 278100
AlexMathMidterm92100
AlexMathQuiz 388100
AlexMathFinal95100
=VDB(500, 50, 5, 4, 5)

Result: 58

By setting start_period to 4 and end_period to 5, this isolates depreciation in only the final two assessments. The book value has declined significantly by period 4, so the depreciation in these final periods is much smaller, totaling approximately 58 points as the value asymptotically approaches the salvage value.

Common errors

Which VDB error are you seeing?
VDB returned an error#NUM!
Ensure salvage < cost. For example, use =VDB(500, 40, 5, 1, 1) instead of =VDB(500, 600, 5, 1, 1).
#NUM!
Verify the period range is in ascending order. Correct usage: =VDB(500, 50, 5, 1, 3) not =VDB(500, 50, 5, 3, 1).
#VALUE!
Ensure all numeric arguments are numbers or references to numeric cells. Replace =VDB(500, 50, "five", 1, 2) with =VDB(500, 50, 5, 1, 2).
ErrorWhy it happensHow to fix it
#NUM!The salvage value is greater than or equal to the cost value, which violates the fundamental depreciation model where salvage must be strictly less than cost.Ensure salvage < cost. For example, use =VDB(500, 40, 5, 1, 1) instead of =VDB(500, 600, 5, 1, 1).
#NUM!The start_period value is greater than end_period, which is logically impossible since a depreciation range cannot begin after it ends.Verify the period range is in ascending order. Correct usage: =VDB(500, 50, 5, 1, 3) not =VDB(500, 50, 5, 3, 1).
#VALUE!A non-numeric value has been passed to a parameter that requires a number, such as text in the life, factor, or no_switch argument.Ensure all numeric arguments are numbers or references to numeric cells. Replace =VDB(500, 50, "five", 1, 2) with =VDB(500, 50, 5, 1, 2).

Tips and when to use something else

  • VDB automatically switches to straight-line depreciation when it becomes more beneficial (higher values), unless you set no_switch to TRUE. This makes it ideal for tax reporting where accelerated early depreciation is preferred until a breakeven point.
  • For simpler, constant depreciation across all periods, use SLN (straight-line) instead; for sum-of-years-digits depreciation, use SYD rather than configuring VDB with a custom factor.
  • The factor parameter defaults to 2 (double declining balance). Increase it to 3, 4, or higher to accelerate depreciation in early periods, or set it to 1 for standard declining balance without doubling.
  • VDB correctly handles fractional period boundaries—you can calculate depreciation for mid-year purchases by using start_period = 0.5, for example, to depreciate only half the first period.

Frequently asked questions

What is the difference between VDB and DDB?
DDB (Double Declining Balance) applies a fixed 200% declining rate throughout the entire asset life. VDB uses a configurable factor (defaulting to 2) and automatically switches to straight-line depreciation when it becomes more advantageous, making it more sophisticated for real-world accounting needs.
Why does VDB switch to straight-line depreciation automatically?
Switching at the optimal point maximizes early depreciation (beneficial for tax purposes) while guaranteeing the asset value never falls below salvage value. Set no_switch to TRUE if you need to disable this automatic switching and maintain declining balance throughout.
Can I use VDB to calculate depreciation for partial accounting periods?
Yes. VDB handles fractional periods correctly by interpolating the depreciation value. For example, if an asset is purchased July 1 (mid-year), you can set start_period = 0.5 and end_period = 1 to calculate only half of the first year's depreciation.
What does the factor parameter do, and what values are typical?
Factor determines the rate of decline; it represents the multiple of straight-line rate applied each period. A factor of 2 means 200% declining balance (double straight-line), factor 3 means triple, and so on. Most assets use factor = 2; higher values accelerate deductions in early periods.

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