LCCの計算方法|点検・補修・更新費をExcel・VBAで現在価値化

建設実務

前の記事では、将来発生する1件の補修費について、

PV=\frac{C_t}{(1+i)^t}

という式を使い、現在価値へ換算する方法を整理しました。

実際のLCCでは、費用は1回だけではありません。

例えば橋梁の維持管理では、

  • 定期的な点検費
  • 小規模な補修費
  • 大規模補修費
  • 構造物の更新費

などが、それぞれ異なる時期に発生します。

そのためLCCを計算するには、

各年次に発生する費用を現在価値へ換算し、それらを合計する

必要があります。

この記事では、国土交通省の費用便益分析マニュアルを出典として、

  • LCCで何を合計するのか
  • 複数年の費用を現在価値化する考え方
  • Excelで年次別費用表を作る方法
  • SUM関数・SUMPRODUCT関数による集計
  • VBAでLCCを計算する方法
  • 実務でLCCを使用するときの注意点

を整理します。

重要:利用上の注意

本記事は、複数年に発生する維持管理費等を現在価値へ換算して合計する計算方法を理解するための技術解説です。

記事内の費用額、発生年、補修時期などは計算方法を説明するための仮定値であり、国土交通省資料に掲載された標準値ではありません。

実際の維持管理計画やLCC業務では、対象施設の点検結果、補修計画、発注者条件、採用基準、単価、割引率、評価期間等を確認し、利用者自身の責任で計算条件と結果の妥当性を検証してください。

LCC計算の参考となる国土交通省資料

今回参照する主な資料は、前の記事と同じです。

国土交通省 道路局・都市局
『費用便益分析マニュアル』令和7年8月

国土交通省公式PDF:

https://www.mlit.go.jp/road/ir/ir-hyouka/ben-eki_2.pdf

このマニュアルでは、道路事業の費用として、

  • 道路整備に要する事業費
  • 道路維持管理に要する費用
  • 道路構造物の更新に要する費用

を扱っています。

道路維持管理費には、橋梁・トンネル等の道路構造物の点検・補修にかかる費用が含まれます。

また、道路構造物の更新費として、橋梁等の構造物を更新するための費用も扱われています。

そして、これらの費用を各年次に設定し、基準年次における現在価値へ換算したうえで、合計を総費用とする考え方が示されています。

つまり、

費用の種類を整理する
→ 発生年を設定する
→ それぞれ現在価値化する
→ 合計する

という流れです。

この考え方は、橋梁維持管理のLCCを整理する場合にも分かりやすい基本形になります。

国交省マニュアルの総費用現在価値の考え方

国交省マニュアルでは、費用種別jについて、現在価値を次のような形で算定しています。

CofPV_j=\sum<em>t\frac{C</em>{j(s+t)}}{(1+i)^{s+t}}

ここで、

  • CofPV_j:費用種別jの現在価値
  • s:基準年次から供用開始年次までの年数
  • t:供用開始年次を0年目とした年次
  • C_{j(s+t)}:年次s+tに発生する費用j
  • i:割引率
  • j:費用種別

です。

国交省マニュアルでは、事業費、維持管理費、更新費について、それぞれ現在価値を算定し、それらを合計して総費用としています。

LCCとして単純化するとどうなるか

橋梁の維持管理費用だけに注目し、

現在を0年目

として整理すると、考え方をより単純にできます。

例えば、各年次に発生する費用をC_tとすれば、

LCC<em>{PV}=\sum</em>{t=0}^{T}\frac{C_t}{(1+i)^t}

と整理できます。

ここで、

  • LCC_PV:現在価値ベースで合計したLCC
  • C_t:t年目に発生する費用
  • i:割引率
  • t:費用発生年
  • T:評価期間

です。

この式の位置付け

LCC<em>{PV}=\sum</em>{t=0}^{T}\frac{C_t}{(1+i)^t}

という「LCC」の記号付き数式が、そのまま国交省マニュアルに掲載されているわけではありません。

国交省マニュアルに示されている、

各年次の各費用を現在価値化し、それらを合計する

という計算方法を、維持管理LCCとして単純化して表現したものです。

点検費・補修費・更新費を分けて考える

費用を種類ごとに分けるなら、例えば、

LCC<em>{PV}=PV</em>{I}+PV<em>{R}+PV</em>{U}

と考えられます。

さらに各費用が複数回発生するなら、

LCC_{PV}=\sum_t\frac{I_t}{(1+i)^t}+\sum_t\frac{R_t}{(1+i)^t}+\sum_t\frac{U_t}{(1+i)^t}

と整理できます。

ここで、

  • I_t:t年目の点検費
  • R_t:t年目の補修費
  • U_t:t年目の更新費

です。

実際にはこれ以外の維持管理費を扱う場合もあります。

重要なのは、

何をLCCへ含めたのかを明確にすること

です。

仮の維持管理シナリオで計算してみる

ここからは計算方法を理解するため、簡単な仮定例を使います。

次の3つの費用が発生するとします。

発生年 費用種別 費用
5年後 点検等 100万円
15年後 補修 500万円
30年後 更新 2,000万円

割引率は計算例として4%とします。

重要

上記の金額・発生年は説明用の仮定値です。

「橋梁は5年後に100万円、15年後に500万円、30年後に2,000万円かかる」という標準値ではありません。

実務では対象施設、点検結果、補修工法、数量、単価、補修計画等から費用を設定してください。

5年後の100万円を現在価値化する

点検等の費用100万円が5年後に発生するとします。

PV_1=\frac{1,000,000}{1.04^5}

計算すると、

PV_1\approx821,927

です。

約82万円になります。

15年後の500万円を現在価値化する

次に、15年後に500万円の補修費が発生するとします。

PV_2=\frac{5,000,000}{1.04^{15}}

計算すると、

PV_2\approx2,776,323

です。

約278万円です。

30年後の2,000万円を現在価値化する

30年後に2,000万円の更新費が発生するとします。

PV_3=\frac{20,000,000}{1.04^{30}}

計算すると、

PV_3\approx6,166,373

です。

約617万円になります。

3つの現在価値を合計する

現在価値ベースのLCCは、

LCC_{PV}=PV_1+PV_2+PV_3

です。

したがって、

LCC_{PV} \approx 821,927</p> <ul> <li>2,776,323</li> <li> <p>6,166,373

となり、

LCC_{PV}\approx9,764,623

です。

約976万円となります。

名目上の費用を単純に合計すると、

100万円+500万円+2,000万円=2,600万円

ですが、4%の割引率で各費用を現在価値化すると、今回の仮定例では約976万円になります。

注意

これは「将来2,600万円かかる工事が、実際には976万円で済む」という意味ではありません。

将来発生する費用を基準年次の価値へ換算し、

異なる時期に費用が発生するシナリオ同士を比較するための値

です。

ExcelでLCC計算表を作る

Excelでは、年次別に1行ずつ費用を配置すると確認しやすくなります。

例えば次のようにします。

A列 B列 C列 D列
費用種別 発生年 費用 現在価値
点検等 5 1000000 計算式
補修 15 5000000 計算式
更新 30 20000000 計算式

さらにH1へ割引率として、

4%

を入力するとします。

D2には、

=C2/(1+$H$1)^B2

と入力します。

これを下方向へコピーすれば、

  • D2:5年後の費用の現在価値
  • D3:15年後の費用の現在価値
  • D4:30年後の費用の現在価値

を計算できます。

最後にD5へ、

=SUM(D2:D4)

と入力します。

これが現在価値ベースの費用合計です。

Excelでは「1行1費用」にすると検算しやすい

LCC表では、

1行に1つの費用発生イベント

を置く方法が分かりやすいです。

例えば、

費用種別 発生年 費用 現在価値
定期点検 5 1,000,000 821,927
補修A 15 5,000,000 2,776,323
更新 30 20,000,000 6,166,373

という形です。

この形式なら、

  • いつ発生する費用か
  • 金額はいくらか
  • 現在価値はいくらか

を1行単位で確認できます。

また、後から費用を追加・削除した場合にも、計算根拠を追いやすくなります。

複雑な数式1本へすべて押し込むより、年次別費用を見える形で残す方が実務では検算しやすいと考えます。

SUMPRODUCT関数なら1セルでも計算できる

年次がB2:B4、費用がC2:C4、割引率がH1なら、

=SUMPRODUCT(C2:C4/(1+$H$1)^B2:B4)

とすれば、1セルで合計現在価値を計算することもできます。

この式では、

各費用 ÷ (1+割引率)^発生年

を計算し、その結果をすべて合計しています。

数式としては、

\sum_t\frac{C_t}{(1+i)^t}

をExcelへそのまま落とした形です。

ただし、業務で計算根拠を確認する目的なら、

各行で現在価値を計算してからSUMで合計する方法

の方が、途中結果を目視確認できます。

SUMPRODUCTは集計用として便利ですが、最初から1セルだけにすると、どの費用が計算結果へどの程度影響しているのか見えにくくなります。

Excel利用上の注意

計算式を短くすることより、計算条件を確認できることの方が重要です。

業務成果で使用する場合は、費用種別、発生年、費用額、割引率、現在価値を追跡できる形で整理することをおすすめします。

点検費が複数回ある場合も1行ずつ配置できる

例えば点検費が、

  • 5年後
  • 10年後
  • 15年後
  • 20年後

と複数回発生する場合でも考え方は同じです。

Excelでは、

定期点検 | 5  | 1000000
定期点検 | 10 | 1000000
定期点検 | 15 | 1000000
定期点検 | 20 | 1000000

のように1行ずつ配置します。

各行で現在価値を計算し、最後に合計すればよいだけです。

同じ費用であっても、発生年が違えば現在価値は異なります。

このためLCCでは、

費用額だけではなく、費用発生年をデータとして持つこと

が重要になります。

VBAで複数費用のLCCを計算する

複数行の費用について、現在価値をまとめて計算するVBAのユーザー定義関数も作れます。

以下は、

  • 費用範囲
  • 発生年範囲
  • 割引率

を指定すると、現在価値を合計する最小限のサンプルです。

コード利用上の注意

以下のVBAコードは、LCC計算の考え方と動作を確認するためのサンプルです。

実行前にExcelファイルのバックアップを作成してください。
業務で使用中のファイルへ、いきなり貼り付けて使用しないでください。

また、このコードは費用の妥当性、補修時期、割引率、評価期間等を自動判定するものではありません。

コードの利用および実務への適用は自己責任で行い、必ずテストデータで計算結果を検証してください。

標準モジュールへ次のコードを記述します。

Option Explicit

Public Function CalcLCCPresentValue( _
    ByVal costRange As Range, _
    ByVal yearRange As Range, _
    ByVal discountRate As Double) As Variant

    Dim i As Long
    Dim totalPV As Double
    Dim costValue As Double
    Dim yearValue As Double

    If costRange.Cells.Count <> yearRange.Cells.Count Then
        CalcLCCPresentValue = CVErr(xlErrRef)
        Exit Function
    End If

    If discountRate <= -1 Then
        CalcLCCPresentValue = CVErr(xlErrNum)
        Exit Function
    End If

    totalPV = 0

    For i = 1 To costRange.Cells.Count

        If Not IsNumeric(costRange.Cells(i).Value) _
            Or Not IsNumeric(yearRange.Cells(i).Value) Then

            CalcLCCPresentValue = CVErr(xlErrValue)
            Exit Function

        End If

        costValue = CDbl(costRange.Cells(i).Value)
        yearValue = CDbl(yearRange.Cells(i).Value)

        If costValue < 0 Or yearValue < 0 Then
            CalcLCCPresentValue = CVErr(xlErrNum)
            Exit Function
        End If

        totalPV = totalPV + _
            costValue / ((1 + discountRate) ^ yearValue)

    Next i

    CalcLCCPresentValue = totalPV

End Function

例えば、

  • B2:B4:発生年
  • C2:C4:費用
  • H1:割引率

なら、ワークシートから、

=CalcLCCPresentValue(C2:C4,B2:B4,H1)

と入力できます。

今回の仮定例では、約、

9764623

が返ります。

VBAでも「費用を勝手に判断しない」

今回のVBAでは、

  • 点検費なのか
  • 補修費なのか
  • 更新費なのか

を判定していません。

単純に、

費用額と発生年から現在価値を計算して合計する

だけです。

これは意図的です。

例えば、

30年後に更新するべきか

という判断は、この計算関数が決めるものではありません。

同様に、

  • 補修時期
  • 補修工法
  • 費用額
  • 評価期間
  • 割引率

も、別途設定すべき計算条件です。

VBAに業務判断まで埋め込むと、

数値計算のロジック

と、

維持管理方針

が混在してしまいます。

そのため、このサンプルでは現在価値計算だけを担当させています。

LCC計算で二重計上に注意する

複数費用を扱うときには、二重計上にも注意が必要です。

例えば、

  • 年間維持管理費の中に補修費が含まれている
  • 別行でも同じ補修費を計上している

場合には、同じ費用を二重にLCCへ含める可能性があります。

また、

  • 補修工事費
  • 仮設費
  • 設計費
  • 点検費
  • 間接経費

などをどの費用項目へ含めるかは、業務の算定条件によって異なります。

したがって、LCC表を作る前に、

どの費用を、どの項目として計上するか

を整理しておくことが重要です。

注意

本記事では費用項目の分類方法そのものを標準化していません。

対象業務で採用するLCC算定条件や発注者の指示を確認してください。

評価期間をそろえないとシナリオ比較にならない

LCCで複数シナリオを比較するときには、評価期間も重要です。

例えば、

  • シナリオA:30年間
  • シナリオB:50年間

で単純にLCCを比較すると、対象としている期間そのものが異なります。

そのため、シナリオ比較では基本的に、

何年間の費用を比較しているのか

をそろえておく必要があります。

また、評価期間末に構造物の価値が残る場合や、評価期間をまたぐ更新をどう扱うかについては、採用する基準・マニュアルに応じた整理が必要です。

国交省の費用便益分析マニュアルでも、検討期間後の残存価値について現在価値化したうえで控除できる考え方が示されています。

ただし、この扱いをそのまま個別の橋梁LCCへ適用するかどうかは、対象業務の算定条件を確認する必要があります。

物価の基準年と割引率もそろえる

LCC計算では、費用発生年だけでなく、

費用額が何年価格なのか

も確認する必要があります。

例えば、

  • 2026年価格の補修費
  • 過年度成果品に入っていた2018年価格の更新費

を、そのまま同じ費用系列へ入れると、価格基準が揃っていません。

また、将来費用を名目価格で設定するのか、実質価格で設定するのかによっても整理方法が変わります。

現在価値換算は、

価格基準を揃える処理そのものではありません。

国交省マニュアルでも、物価変動を除外して基準年次の実質価格へ変換する処理と、割引率を用いた現在価値化を区別しています。

特に注意

「費用を現在価値化したから、価格条件も全部そろった」と考えないでください。

単価の基準年、物価調整、割引率、費用発生年は、それぞれ確認する必要があります。

LCCが最小なら、その案が必ず最適とは限らない

LCCを計算すると、シナリオごとに1つの費用値を出せます。

例えば、

  • シナリオA:LCC 1.2億円
  • シナリオB:LCC 1.0億円
  • シナリオC:LCC 1.4億円

となれば、費用面ではBが最小です。

しかし、

LCCが最小というだけで、そのシナリオを自動的に採用することはできません。

橋梁維持管理では、

  • 安全性
  • 健全度
  • 重要路線かどうか
  • 迂回路の有無
  • 施工条件
  • 交通規制
  • 災害リスク
  • 予算制約

なども意思決定に影響します。

LCCは、

複数シナリオの費用面を共通条件で比較するための指標

として位置付ける方が適切です。

ここまでの議論でLCC計算の流れがつながる

ここまでの記事をつなげると、橋梁LCCの計算フローが見えてきます。

まず、劣化曲線、

y=-ax^2+b

によって将来の状態を推定します。

次に、

x=\sqrt{\frac{b-y}{a}}

によって、所定の管理水準への到達時期を求めます。

そこから補修・更新時期を設定し、

PV=\frac{C_t}{(1+i)^t}

によって各費用を現在価値へ換算します。

最後に、

LCC<em>{PV}=\sum</em>{t=0}^{T}\frac{C_t}{(1+i)^t}

として合計します。

つまり、

劣化予測
→ 管理水準への到達時期
→ 補修・更新時期
→ 年次別費用
→ 現在価値
→ LCC

という流れです。

ここまでできれば、次に必要になるのは、

複数の維持管理シナリオを同じ条件で比較すること

です。

次は複数シナリオをLCCで比較する

LCCの本当の意味は、1つの費用合計を出すことだけではありません。

例えば、

シナリオA

早めに小規模補修を行い、その後の劣化進行を抑える。

シナリオB

補修時期を遅らせ、後から大規模補修を行う。

シナリオC

一定期間維持した後に更新する。

といった複数案について、

  • 評価期間
  • 割引率
  • 費用基準年
  • 費用項目

などをそろえ、現在価値ベースのLCCを比較します。

次の記事では、このシナリオ比較をExcelへ落とし込み、

「早期補修」「大規模補修」「更新」のどの案が費用面でどう違うのか

を具体的な仮定例で計算します。

まとめ

複数年に発生する維持管理費を現在価値ベースで合計する場合、

LCC<em>{PV}=\sum</em>{t=0}^{T}\frac{C_t}{(1+i)^t}

という形で整理できます。

Excelでは、各費用について、

=C2/(1+$H$1)^B2

のように現在価値を計算し、

=SUM(D2:D4)

で合計できます。

1セルでまとめるなら、

=SUMPRODUCT(C2:C4/(1+$H$1)^B2:B4)

という方法もあります。

VBAでも、費用範囲と発生年範囲を順番に計算して合計するユーザー定義関数を作成できます。

ただし、LCCで重要なのは計算式だけではありません。

  • どの費用を含めるか
  • 補修・更新時期
  • 費用額の根拠
  • 評価期間
  • 単価の基準年
  • 物価調整
  • 割引率
  • 二重計上の有無

などの前提条件が、結果を大きく左右します。

そして、

LCC最小=自動的に最適な維持管理案

でもありません。

本記事の数式・Excel式・VBAコードの利用について

本記事は、複数年に発生する維持管理費等を現在価値化して合計する計算方法を理解するための参考情報です。

記事内の金額・費用発生年は説明用の仮定値です。

実際の維持管理計画、LCC算定、補修・更新判断、業務成果への使用については、発注者仕様、最新の基準・要領、対象施設の点検結果、補修計画、費用算定条件等を確認してください。

実務への適用は利用者自身の責任で行い、採用条件と計算結果の技術的妥当性を必ず検証してください。