Contact

VDB Function (LibreOffice Calc)

Financial Intermediate LibreOffice Calc

Build a LibreOffice Calc VDB depreciation schedule, compare automatic straight-line switching, and check a fractional-period example against native results.

Verification status: Eight ordinary VDB formulas were recalculated through XLSX import and separate ODS export in LibreOfficeDev 26.8.0.0.alpha0, build 2c87e51eeaa2b413ff4ae097b2705eea1995d8e5, using a forced-recalculation profile. Saved identities, numeric results and both controls were checked. This is headless development-build evidence; no stable-release, 26.8.1.1 or GUI execution is claimed. How formula examples are checked

Quick answer: =VDB(1000;0;5;0;1) returned 400 in the scoped LibreOffice development-build check below.

Availability and version history

  • Introduced: First release not established; documented by LibreOffice 3.3.
  • Supported in: LibreOffice 26.8 Help and 26.8.1.1 source. No retirement is established.
  • Scope: English desktop Calc formulas with semicolon separators; execution below used a development build.
  • Checked: October 14, 2026. Eight ordinary formulas were recalculated headlessly in LibreOfficeDev 26.8.0.0.alpha0, build 2c87e51eeaa2b413ff4ae097b2705eea1995d8e5. No stable-release or GUI execution is claimed.

What VDB calculates

VDB calculates depreciation over an interval using a variable declining-balance method. By default, it switches to straight-line depreciation when that method produces the larger charge. Start and End are elapsed period positions, not calendar dates: the first complete year is interval 0 to 1. Function-specific Help.

Syntax and arguments

VDB(Cost; Salvage; Life; Start; End [; Factor [; NoSwitch]])
  • Cost / Salvage: Initial cost and the residual value at the end of useful life.
  • Life: Useful life in a consistent unit, such as years or months.
  • Start / End: Beginning and ending positions in those same units. Fractions describe partial periods.
  • Factor: Optional declining-balance multiplier, default 2 for double declining balance.
  • NoSwitch: Optional boolean. Omitted or 0 permits switching; 1 disables it. Supply Factor before NoSwitch.

Eight reproducible examples

All eight formulas were recalculated in the exact development build above. The independent column uses high-precision arithmetic; the final column is separately rounded from the saved native numeric value. Values are shown to at most twelve decimal places, so a last-place display difference is possible.

Formula Independent reference Saved development-build result
=VDB(1000;0;5;0;1) 400 400
=VDB(1000;0;5;1;2) 240 240
=VDB(1000;0;5;2;3) 144 144
=VDB(1000;0;5;3;4) 108 108
=VDB(1000;0;5;4;5) 108 108
=VDB(1000;0;5;0;5) 1000 1000
=VDB(1000;0;5;3;4;2;1) 86.4 86.4
=VDB(1000;0;5;3.5;4.5) 108 108

Practical worksheet

Put cost 1000, salvage 0 and life 5 in B1:B3. Enter start positions 0 through 4 in A6:A10 and their corresponding end positions 1 through 5 in B6:B10. In C6 enter =VDB($B$1;$B$2;$B$3;A6;B6) and fill down.

The resulting annual schedule is 400, 240, 144, 108, 108, totaling 1000. These five intervals are the first five native examples. A separate =VDB(1000;0;5;0;5) also returns 1000. Track opening balance, charge and closing balance in separate columns; the residual value should not be subtracted again after VDB has already applied it.

Advanced interpretation and checks

After the first three years, the remaining balance is 216. Continuing double declining balance would charge 216*2/5 = 86.4 in year four, whereas straight-line depreciation over the two remaining years is 108 per year. The default switches to 108; =VDB(1000;0;5;3;4;2;1) disables that switch and returns 86.4.

The tested fractional interval =VDB(1000;0;5;3.5;4.5) returns 108. For this example, it spans half of each of the two equal 108 charges. The inspected LibreOffice implementation calculates complete periods and subtracts the excluded start/end portions. This is important when comparing spreadsheets: a fractional-period algorithm should be checked directly, rather than inferred from a similarly named function in another product.

To express a five-year life in months, all three time quantities must use months. Changing Life alone from 5 to 60 while leaving Start and End unchanged changes the interval being depreciated. Nor is an arbitrary monthly declining-balance calculation guaranteed to equal a prorated annual schedule. Inspected implementation.

Boundaries and troubleshooting

The inspected function accepts five to seven arguments. Its source rejects negative Start, End before Start, End after Life, negative Cost, Salvage above Cost and nonpositive Factor. These are source-reviewed guards, not executed error examples. For an ordinary schedule, use positive Life and Factor with 0 ≤ Salvage ≤ Cost and 0 ≤ Start ≤ End ≤ Life.

Do not confuse VDB’s interval positions with DDB’s period number. Disabling switching can leave an undepreciated balance; it is not a promise to reach salvage exactly. These numerical examples explain the spreadsheet calculation, not a jurisdiction-specific accounting or tax rule.

DDB, SLN, DB.

Official evidence and checking scope

The XLSX formulas were recalculated with a forced-recalculation profile and exported to a separate ODS file. The deliberately stale SUM cache changed to 3, and the uncached SUM returned 7. All eight function identities and numeric results were checked against the saved XML and independent calculations. The execution was headless in the exact development build named above; the separately inspected 26.8.1.1 source was not executed. Invalid-domain cases were not tested.