{
  "category": "Financial functions",
  "display_name": "VDB",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.VDB",
  "implementation_state": {
    "answer_bank": {
      "excel_builds": [
        "20430"
      ],
      "larger_numeric": 0,
      "last_bit": 0,
      "matched": 2201,
      "other_mismatch": 0,
      "refused": 0,
      "rows": 2201,
      "unread": 0,
      "worst_ulp": 0
    },
    "detail": "Recorded: 2,201 in the answer bank and 9 workbook cells.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "matches",
    "state_label": "Matches every recorded Excel answer",
    "summary": "Matches all 2,210 recorded answers",
    "workbook_corpus": {
      "cells": 9,
      "matched": 9
    }
  },
  "implementations": [
    {
      "commit": "9e1884369a678158dd82d3d74188daf986995e87",
      "flavour": "excel-compatibility-candidate",
      "language": "Rust",
      "name": "CalcFunc",
      "own_code": [
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/financial.rs#L300-L309",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/depreciation_family.rs#L217-L270",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/depreciation_family.rs#L277-L385",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/depreciation_family.rs#L451-L469"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "ported/depreciation_family::validate_finite",
        "ported/depreciation_family::publish_depreciation",
        "ported/depreciation_family::depreciation_integer_power",
        "ported/depreciation_family::ddb_period_depreciation",
        "ported/excel_numeric::backend::sqrt",
        "ported/excel_numeric::binary_with",
        "ported/excel_numeric::excel_pow_positive",
        "ported/excel_numeric::excel_pow_chain",
        "ported/excel_numeric::excel_x87_sub",
        "ported/excel_numeric::excel_x87_mul",
        "ported/excel_numeric::excel_x87_div",
        "ported/excel_numeric::excel_x87_recip",
        "ported/excel_numeric/x87::mul",
        "ported/excel_numeric/x87::sub",
        "ported/excel_numeric/x87::div",
        "ported/excel_numeric/x87::recip",
        "ported/excel_numeric/x87_chains::pow2_positive",
        "ported/excel_numeric/x87_chains::pow2",
        "ported/excel_numeric/x87_chains::exp_ext",
        "ported/excel_numeric/x87_chains::exp_with",
        "ported/excel_numeric/x87_chains::excel_exp",
        "ported/excel_numeric/x87_chains::log_with",
        "ported/excel_numeric/x87_chains::excel_log",
        "ported/power_fn::exact_integer_magnitude",
        "ported/power_fn::accept_negative_base_odd_root",
        "ported/power_fn::binexp_positive",
        "ported/power_fn::power_kernel"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/financial.rs#L300-L309",
      "state": "matches",
      "suite": null,
      "summary": "Matches all 2,210 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.VDB.json",
  "name": "VDB",
  "notes": [
    {
      "basis": "Ten recorded option readings (cases 00022 to 00031 of the run). A rule reading the required arguments, then factor, then no_switch reproduces all 142 retained padding calls.",
      "documentation": {
        "claim": "If factor is omitted, it is assumed to be 2 (the double-declining balance method).",
        "source": "https://support.microsoft.com/en-us/office/vdb-function-dde4e207-f3fa-488d-91d2-66d55e861d73"
      },
      "evidence": [
        {
          "commit": "cfdc059510fa71bb7ae9609bb92e30a2d384de56",
          "locator": "recorded_vdb_explicit_missing_factor_is_zero",
          "note": "recorded readings pinned",
          "path": "apps/dna-onecalc/tests/acceptance.rs",
          "repository": "DnaCalc"
        }
      ],
      "functions": [
        "FUNC.VDB"
      ],
      "inferred": null,
      "kind": "documentation-differs",
      "note_id": "FN-VDB-001",
      "open": [],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "=VDB(A100,A101,A102,A103,A104,,FALSE)",
          "correct": null,
          "excel": {
            "bits": "0x4056800000000000",
            "display": "90",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "cost",
              "value": {
                "bits": "0x408f400000000000",
                "display": "1000",
                "kind": "number"
              }
            },
            {
              "name": "salvage",
              "value": {
                "bits": "0x4059000000000000",
                "display": "100",
                "kind": "number"
              }
            },
            {
              "name": "life",
              "value": {
                "bits": "0x4024000000000000",
                "display": "10",
                "kind": "number"
              }
            },
            {
              "name": "start_period",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            },
            {
              "name": "end_period",
              "value": {
                "bits": "0x4000000000000000",
                "display": "2",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111dep-options-00022-vdb-optional-5-22",
            "note": null,
            "path": "runs/w111-depreciation-options-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "=VDB(A100,A101,A102,A103,A104,\"2\",FALSE)",
          "correct": null,
          "excel": {
            "bits": "0x4064000000000000",
            "display": "160",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "cost",
              "value": {
                "bits": "0x408f400000000000",
                "display": "1000",
                "kind": "number"
              }
            },
            {
              "name": "salvage",
              "value": {
                "bits": "0x4059000000000000",
                "display": "100",
                "kind": "number"
              }
            },
            {
              "name": "life",
              "value": {
                "bits": "0x4024000000000000",
                "display": "10",
                "kind": "number"
              }
            },
            {
              "name": "start_period",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            },
            {
              "name": "end_period",
              "value": {
                "bits": "0x4000000000000000",
                "display": "2",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111dep-options-00025-vdb-optional-5-25",
            "note": null,
            "path": "runs/w111-depreciation-options-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "=VDB(A100,A101,A102,A103,A104,\"TRUE\",FALSE)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "cost",
              "value": {
                "bits": "0x408f400000000000",
                "display": "1000",
                "kind": "number"
              }
            },
            {
              "name": "salvage",
              "value": {
                "bits": "0x4059000000000000",
                "display": "100",
                "kind": "number"
              }
            },
            {
              "name": "life",
              "value": {
                "bits": "0x4024000000000000",
                "display": "10",
                "kind": "number"
              }
            },
            {
              "name": "start_period",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            },
            {
              "name": "end_period",
              "value": {
                "bits": "0x4000000000000000",
                "display": "2",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111dep-options-00026-vdb-optional-5-26",
            "note": null,
            "path": "runs/w111-depreciation-options-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "VDB defaults factor to 2 only when the argument is left off the end of the call. An empty slot, as in VDB(c,s,l,a,b,,FALSE), is read as 0, and the result is the straight-line amount: 90 here, where factor 2 gives 160. Text factors other than numbers give #VALUE!, including \"TRUE\" and \"FALSE\", while \"2\" is read as 2.",
      "status": "measured",
      "title": "An empty factor slot in VDB is 0, not the default 2"
    }
  ],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n### Relationships\n\n- **`SLN`** is the straight line. `VDB` with `factor` 0 and the switch allowed gives the `SLN` amount\n  times the length of the span, as above.\n- **[DB](FUNC.DB.md)** is declining balance at a derived, rounded rate, with no `factor` and no\n  switch, and a partial first year set in months.\n- **`SYD`** is sum-of-years digits, the other accelerated method in the family.\n- **[AMORLINC](FUNC.AMORLINC.md)** and **[AMORDEGRC](FUNC.AMORDEGRC.md)** are the French accounting\n  pair, which prorate on a different basis.\n- **Confused with**: tax depreciation tables, which fix their own conventions for the year of\n  purchase. `VDB` with a fractional span can approximate one, and is not the same thing.\n\n\n",
    "how-to-implement": "\n### Numerical notes\n\n\nThe notes below cover how the arguments are read. They say nothing about the arithmetic of the\nresult, so this section gives the shape of that arithmetic and the last-unit questions remain open.\n\n**The schedule is a recurrence.** Period `k` needs the book value after `k − 1` charges, so the cost\ngrows with the period and each earlier rounding is inherited. In exact arithmetic the declining\npart has a closed form, `cost × (1 − factor/life)^k`, but it is not the same floating-point\nnumber as the recurrence, and it does not know about the limit at `salvage` or the switch.\n\n**Tiny values.** With `factor` 0 and very small costs, recorded answers depart from the straight-line\namount, and some are `0` where that amount would be a subnormal number. This is consistent with\nintermediate results being published as zero when they fall below the normal range, but the\narithmetic is not established here.\n\n**No transcendental functions.** Unlike [DB](FUNC.DB.md), `VDB` needs only addition, subtraction,\nmultiplication, division and comparison. Any last-unit difference is therefore about the order and\nprecision of those operations.\n\n\n",
    "quirks": "\n### Result and edge cases\n\n\nReturns `Number`.\n\nRecorded behaviour, from readings on Excel 16.0 build 20430, Windows 64-bit, CPU not recorded,\nclassified for this page:\n\n- **`start_period = end_period`** gives `0` when the span lies inside the life.\n- **`factor = 0`** gives straight line. With `no_switch` FALSE and `cost` above `salvage`, 10,427 of\n  10,686 recorded answers are within 1e−9 relative of `(cost − salvage) / life × (end − start)`.\n  The other 259 all have `cost` below 1e−38. With `no_switch` TRUE, all 9,322 recorded answers are\n  `0`, because there is nothing to switch to and the declining rate is zero.\n- **`salvage` above `cost`** gives a **negative** number, not an error:\n  `VDB(1, 1000, 1, 0, 0.5, 2, FALSE)` is `-499.5`.\n- **`cost = 0`** is admitted, and with a positive `salvage` also gives a negative number:\n  `VDB(0, 1, 1, 0, 0.5, 2, FALSE)` is `-0.5`.\n- **`salvage = 0`** is admitted, as Microsoft's parameter table says.\n- **Inputs near the limits of the number range** can give `#NUM!` with no other condition met, for\n  example with an enormous `factor`.\n\n**The span is not additive.** This is the most important behaviour on the page, and the arithmetic\nof the schedule would not lead you to expect it. For `cost` 1000, `salvage` 100, `life` 1.5 and\n`factor` 1:\n\n| Span | Excel |\n|---|---:|\n| 0 to 1.25 | 783.3333333333333 |\n| 1.25 to 1.5 | 146.66666666666669 |\n| Sum of the two | 930.0 |\n| 0 to 1.5 | 900.0 |\n\nSplitting a span and adding the pieces does not give the whole. The recorded research on these\nreadings concludes that a fractional part of `start_period` is applied first, which changes the\nbasis on which later whole periods decline. So a depreciation schedule built from consecutive\nfractional spans need not total `cost − salvage`.\n\nWhere this applies can be read from the recorded answers. Taking every case where a span and its\ntwo pieces were all read, and calling a split additive when the pieces sum to the whole within 1e−9\nrelative:\n\n| Path | First piece starts | Split point | Additive |\n|---|---|---:|---:|\n| `no_switch` TRUE | any | any | 374 of 374 |\n| switch allowed | whole period | whole period | 837 of 837 |\n| switch allowed | whole period | fraction | 715 of 1,002 |\n| switch allowed | fraction | whole period | 410 of 456 |\n| switch allowed | fraction | fraction | 161 of 286 |\n\nSo the behaviour belongs to the switching path, and appears only when one of the pieces starts at a\nfraction. A schedule of whole periods adds up.\n\n\n\n### Errors\n\n\nMicrosoft documents no error values for `VDB`. It says only that \"All arguments except no_switch\nmust be positive numbers\", which is contradicted in the same place by the statement that `salvage`\ncan be 0, and by readings: `cost`, `salvage`, `start_period` and `factor` can each be 0.\n\n",
    "sources": "- Microsoft Support, \"VDB function\" —\n  <https://support.microsoft.com/en-us/office/vdb-function-dde4e207-f3fa-488d-91d2-66d55e861d73>\n  (syntax, argument meanings, the positive-number sentence and the six examples). Read through a\n  fetch that returned a summary with quoted text, not the raw page.\n- Microsoft Learn, \"WorksheetFunction.Vdb method (Excel)\" —\n  <https://learn.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.vdb> (the parameter table,\n  the switch remarks and the positive-number remark).\n- The recorded `VDB` readings listed in this page's Excel versions section, Excel 16.0 build 20430:\n  the 165,734 distinct numeric inputs surveyed for the *Result and edge cases* and *Errors* tables\n  and the additivity table, the option run the notes below cite, and the three non-additive\n  readings. The research write-up retained with those readings is the source of the fractional-start\n  and strict-comparison conclusions and of the large-period account.\n- Handbook, [Function notes](../notes/NOTES.md).\n- Handbook, [DDB](FUNC.DDB.md) and [DB](FUNC.DB.md) — the sibling methods.\n- Handbook chapters [01 the value universe](../model/01-value-universe.md),\n  [02 coercion and lifting](../model/02-coercion-and-lifting.md) and\n  [06 claim language](../model/06-claim-language.md).\n- Handbook projections `data/functions/FUNC.VDB.json` and `data/presence/FUNC.VDB.json` (arity,\n  classification axes, implementing module and sibling set).\n\n",
    "version-differences": "The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.\n\n| Excel 16.0 build | Platform and CPU | Captured inputs |\n|---|---|---:|\n| 20430 | Windows, bitness not recorded, CPU not recorded | 106 |\n| 20430 | Windows, 64-bit, CPU not recorded | 166,843 |\n\nThe record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.\n\n[Recorded environments and comparison details](https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.VDB.json).",
    "what-it-does": "\n`VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch])` returns the\n**depreciation of an asset over the span from `start_period` to `end_period`**, by a declining\nbalance method. The name stands for variable declining balance.\n\nTwo things set it apart from [DDB](FUNC.DDB.md). It covers a span and not one period, and that span\ncan start and end at fractions of a period. And it switches to straight line when the declining\ncharge falls behind, unless told not to.\n\nThe underlying schedule works period by period from a book value that starts at `cost`:\n\n    declining(k)  =  book(k−1) × factor / life,  limited to book(k−1) − salvage\n    straight(k)   =  (book(k−1) − salvage) / (life − (k−1))\n\n    charge(k)     =  the larger of declining(k) and straight(k)      no_switch FALSE\n    charge(k)     =  declining(k)                                    no_switch TRUE\n\n    book(k)       =  book(k−1) − charge(k)\n\nMicrosoft states the switch in one sentence: Excel switches to straight line when depreciation is\ngreater than the declining balance calculation. Once the schedule has switched it stays on the\nstraight line, because the remaining basis is then spread evenly over the remaining life.\n\n`start_period` and `end_period` are **elapsed time**, not period numbers. The first full period is\nthe span from `0` to `1`:\n\n- `VDB(c, s, l, 0, 1)` is the first period's charge.\n- `VDB(c, s, l, 1, 1)` is `0`, an empty span. It is not the first period.\n- `VDB(c, s, l, 0, l)` is the whole life.\n\nA worked schedule, by the rule above, for `cost` 1000, `salvage` 0, `life` 5, `factor` 2:\n\n| Period | Book at start | Declining | Straight line | Charge with switch | Charge with `no_switch` TRUE |\n|---|---:|---:|---:|---:|---:|\n| 1 | 1000.00 | 400.00 | 200.00 | 400.00 | 400.00 |\n| 2 | 600.00 | 240.00 | 150.00 | 240.00 | 240.00 |\n| 3 | 360.00 | 144.00 | 120.00 | 144.00 | 144.00 |\n| 4 | 216.00 | 86.40 | 108.00 | **108.00** | 86.40 |\n| 5 | 108.00 | 43.20 | 108.00 | **108.00** | 51.84 |\n| Total | | | | 1000.00 | 922.24 |\n\nThe book and declining columns follow the charge with the switch. The switch lands in period 4, and\nwith it the asset is depreciated down to `salvage` exactly. Without it 77.76 is never charged. That\nshortfall is why the switch exists. This table is the Handbook's arithmetic from the rule, not a\nreading.\n\nMicrosoft's six examples, for cost 2400, salvage 300 and a life of 10 years, all follow the\nschedule, with fractional spans prorated inside a period as described below:\n\n| Formula | Meaning | Result |\n|---|---|---|\n| `=VDB(2400, 300, 3650, 0, 1)` | First day | `1.32` |\n| `=VDB(2400, 300, 120, 0, 1)` | First month | `40.00` |\n| `=VDB(2400, 300, 10, 0, 1)` | First year | `480.00` |\n| `=VDB(2400, 300, 120, 6, 18)` | Month 6 to month 18 | `396.31` |\n| `=VDB(2400, 300, 120, 6, 18, 1.5)` | The same at factor 1.5 | `311.81` |\n| `=VDB(2400, 300, 10, 0, 0.875, 1.5)` | First fiscal year, part year, factor 1.5 | `315.00` |\n\nThe last example shows the proration: a full first year at factor 1.5 is 360, and seven eighths of\nthat is 315.\n\n\n\n### Arguments\n\n\n| Argument | Meaning | Default |\n|---|---|---|\n| `cost` | The initial cost of the asset. Required. | none |\n| `salvage` | The value at the end of the depreciation. Can be 0. Required. | none |\n| `life` | The number of periods over which the asset is depreciated. Required. | none |\n| `start_period` | The start of the span, in the same units as `life`. Required. | none |\n| `end_period` | The end of the span, in the same units as `life`. Required. | none |\n| `factor` | The rate at which the balance declines. Optional. | 2 if left off the end of the call |\n| `no_switch` | `TRUE` to stay on declining balance; `FALSE` to allow the switch. Optional. | `FALSE` |\n\n- **An empty `factor` slot is not the default.** Microsoft says an omitted `factor` is 2. The notes\n  below record that this holds only when the argument is left off the end of the call. An empty\n  slot, as in `VDB(c, s, l, a, b, , FALSE)`, is read as `0`, which gives the straight-line amount.\n  To reach `no_switch` while keeping double declining, write the 2.\n- **A blank cell as `factor` behaves like the empty slot.** In the note's example a blank cell, and\n  a cell holding `0`, both give the same 90 as the empty slot. A cell holding `-1` gives `#NUM!`.\n- **Text in `factor` and `no_switch` is treated differently in each slot.** `factor` reads `\"2\"` as 2,\n  and gives `#VALUE!` for `\"TRUE\"`, `\"FALSE\"` and `\"\"`. In the `no_switch` slot of the same recorded\n  run, `\"TRUE\"` and `\"FALSE\"` are accepted, and `\"2\"` and `\"\"` give `#VALUE!`.\n- **Units must match.** `life`, `start_period` and `end_period` are in the same units. Monthly\n  depreciation of a ten-year asset uses `life` 120, as in the examples above.\n\n"
  },
  "signature": {
    "display": "VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch])",
    "parameters": [
      {
        "description": null,
        "name": "cost",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "salvage",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "life",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "start_period",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "end_period",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "factor",
        "optional": true,
        "repeats": false
      },
      {
        "description": null,
        "name": "no_switch",
        "optional": true,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 7,
        "min": 5
      },
      "category": "Financial functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "None",
        "host_interaction_class": "None",
        "kernel_signature_class": "Custom",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "RefOnly",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "Declining-balance depreciation over any span of periods, with an optional switch to straight line",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Returns the depreciation of an asset for a specified or partial period by using a declining balance method",
        "microsoft_url": "https://support.microsoft.com/en-us/office/vdb-function-dde4e207-f3fa-488d-91d2-66d55e861d73"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "VDB"
        },
        {
          "locale": "bg-BG",
          "name": "VDB"
        },
        {
          "locale": "cs-CZ",
          "name": "ODPIS.ZA.INT"
        },
        {
          "locale": "da-DK",
          "name": "VSA"
        },
        {
          "locale": "de-DE",
          "name": "VDB"
        },
        {
          "locale": "el-GR",
          "name": "VDB"
        },
        {
          "locale": "en-AU",
          "name": "VDB"
        },
        {
          "locale": "en-GB",
          "name": "VDB"
        },
        {
          "locale": "en-US",
          "name": "VDB"
        },
        {
          "locale": "es-ES",
          "name": "DVS"
        },
        {
          "locale": "et-EE",
          "name": "VDB"
        },
        {
          "locale": "fi-FI",
          "name": "VDB"
        },
        {
          "locale": "fr-FR",
          "name": "VDB*"
        },
        {
          "locale": "he-IL",
          "name": "VDB"
        },
        {
          "locale": "hr-HR",
          "name": "VDB"
        },
        {
          "locale": "hu-HU",
          "name": "ÉCSRI"
        },
        {
          "locale": "id-ID",
          "name": "VDB"
        },
        {
          "locale": "it-IT",
          "name": "VDB"
        },
        {
          "locale": "ja-JP",
          "name": "VDB"
        },
        {
          "locale": "ko-KR",
          "name": "VDB"
        },
        {
          "locale": "lt-LT",
          "name": "VDB"
        },
        {
          "locale": "lv-LV",
          "name": "VDB"
        },
        {
          "locale": "nb-NO",
          "name": "VERDIAVS"
        },
        {
          "locale": "nl-NL",
          "name": "VDB"
        },
        {
          "locale": "pl-PL",
          "name": "VDB"
        },
        {
          "locale": "pt-BR",
          "name": "VDB"
        },
        {
          "locale": "pt-PT",
          "name": "BDV"
        },
        {
          "locale": "ro-RO",
          "name": "VDB"
        },
        {
          "locale": "ru-RU",
          "name": "ПУО"
        },
        {
          "locale": "sk-SK",
          "name": "VDB"
        },
        {
          "locale": "sl-SI",
          "name": "VDB"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "VDB"
        },
        {
          "locale": "sv-SE",
          "name": "VDEGRAVSKR"
        },
        {
          "locale": "th-TH",
          "name": "VDB"
        },
        {
          "locale": "tr-TR",
          "name": "DAB işlevi"
        },
        {
          "locale": "uk-UA",
          "name": "VDB"
        },
        {
          "locale": "vi-VN",
          "name": "VDB"
        },
        {
          "locale": "zh-CN",
          "name": "VDB"
        },
        {
          "locale": "zh-HK",
          "name": "VDB"
        },
        {
          "locale": "zh-TW",
          "name": "VDB"
        }
      ],
      "signature": {
        "display": "VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch])",
        "parameters": [
          {
            "description": null,
            "name": "cost",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "salvage",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "life",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "start_period",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "end_period",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "factor",
            "optional": true,
            "repeats": false
          },
          {
            "description": null,
            "name": "no_switch",
            "optional": true,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "VDB",
      "version_marker": null,
      "xlcall": {
        "code": "222",
        "symbol": "xlfVdb"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/vdb-function-dde4e207-f3fa-488d-91d2-66d55e861d73"
  },
  "try_it": {
    "formula": "=VDB(2400, 300, 3650, 0, 1)"
  },
  "url": "https://handbook.dnacalc.com/functions/VDB.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "106 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.",
      "excel_build": "16.0 build 20430",
      "platform": "Windows, bitness not recorded, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.VDB.json"
      ]
    },
    {
      "behaviour": "166,843 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.",
      "excel_build": "16.0 build 20430",
      "platform": "Windows, 64-bit, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.VDB.json"
      ]
    }
  ]
}