Google Sheets VDB: Audit Depreciation Across Whole Periods
Calculate a selected depreciation interval with Google Sheets VDB. Check period boundaries, reconcile charges and distinguish an interval from a closing balance.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: VDB calculates depreciation between two period boundaries rather than returning the asset’s remaining value. For the whole-period practice case below, =VDB(10000,1000,5,1,3,2,TRUE) is expected to return 3840, covering the second and third annual charges.
Verification: Google’s reference was reviewed October 21, 2026. The examples below were checked with independent exact arithmetic, not run in Google Sheets. Scope is positive inputs, early whole-year intervals, factor 2 and an explicit TRUE final argument. No screenshot, downloadable workbook or cross-program import test is claimed.
Syntax and boundaries
=VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch])
Supply original purchase cost, the assumed residual value, useful life and the interval boundaries. Factor defaults to 2. The last argument concerns changing to straight-line depreciation; this guide supplies TRUE explicitly, as in Google’s first example, rather than relying on an undocumented default. See the official VDB reference.
Treat the start as a boundary, not a count of included year labels: 0 to 1 describes the first year, while 1 to 3 describes the following two years. Keep useful life and both boundaries in the same unit. The practice scenario uses years throughout.
Google’s documented =VDB(100,10,20,10,11,2,TRUE) displays 3.49. A declining-balance calculation independently gives 100 × 0.9^10 × 0.1 = 3.486784401, which rounds to that display. This check supports the whole-period interpretation; it does not verify every optional-argument or fractional-period rule.
Example: separate annual charges from a selected interval
Enter these synthetic equipment assumptions:
| Cell | Meaning | Value |
|---|---|---|
| B2 | Original cost | 10000 |
| B3 | Residual value | 1000 |
| B4 | Useful life in years | 5 |
Use a separate calculation area:
| Cell | Formula | Expected amount |
|---|---|---|
| D2 | =VDB($B$2,$B$3,$B$4,0,1,2,TRUE) |
4000 |
| D3 | =VDB($B$2,$B$3,$B$4,1,2,2,TRUE) |
2400 |
| D4 | =VDB($B$2,$B$3,$B$4,2,3,2,TRUE) |
1440 |
| D5 | =VDB($B$2,$B$3,$B$4,1,3,2,TRUE) |
3840 |
| D6 | =D3+D4-D5 |
0 |
| D7 | =$B$2-SUM(D2:D4) |
2160 |
The independent rate is 2/5 = 40%. Applying it successively to opening balances of 10,000, 6,000 and 3,600 gives 4,000, 2,400 and 1,440. The selected interval therefore totals 2,400 + 1,440 = 3,840. All three closing balances exceed the assumed residual value.
D6 is a reconciliation check: the two adjacent annual charges should equal the combined interval in this fixture. D7 is the closing value after three years, not another depreciation charge. Do not subtract D5 from original cost and call the result the year-three balance: that would omit the first year’s 4,000 charge.
Change one assumption and check the effect
Change B2 to 12000, leaving B3 and B4 unchanged. Expected D2:D5 become 4800, 2880, 1728 and 4608. D6 remains zero; D7 becomes 2592.
Independently, the first three opening balances are 12,000, 7,200 and 4,320. Multiplying each by 40% gives those charges. This mutation checks that every formula refers to B2 rather than containing a hidden original cost. Restore B2 to 10000 when finished.
Troubleshooting and limits
- One year is missing or counted twice: Write the start and end boundaries beside each formula. Adjacent intervals share a boundary; they must not overlap in duration.
- The result looks like a remaining value: Keep charge, accumulated charge and closing balance in separately labelled columns. Only the last is an asset balance.
- A monthly schedule looks unreasonable: Reconcile the unit of life with both boundaries before calculating. Do not pass a life measured in years alongside boundaries measured in months.
- Late-period results differ from this calculation: Stop extending the 40% walkthrough. Residual-value constraints and switching behavior require their own verification; these early-period checks do not establish a full-life schedule.
- TRUE versus FALSE changes an answer: Google’s two published examples change the residual value as well as the flag, so they are not a controlled comparison of the flag alone. Keep all other inputs fixed when investigating. The omitted-flag default and a complete switching algorithm are not established here.
- A partial period, blank or invalid input produces a surprising result: Google describes partial-period support, but this guide has not verified its proration rules or exact invalid-input error tokens. Do not replace an unexplained result with zero to make a reconciliation pass.
Related functions and platform scope
Use DDB for an individual declining-balance period and SLN for straight-line practice. SYD covers another allocation method. Browse the Google Sheets function reference for the wider catalogue.
This guide concerns the rolling Google Sheets service, not a fixed desktop release or a tested paid edition. Its synthetic examples teach formula mechanics; they do not establish which depreciation method is appropriate for tax or financial reporting.