【EXCEL VBA】改定取得価額の算出マクロについて

ExcelVBA

本記事では、固定資産の定率法における改定取得価額を算出するマクロについてご紹介します。

改定取得価額とは

改定取得価額とは次のように説明されています。

改定取得価額とは

改定取得価額は「未償却残高×定率法の償却率」が初めて償却保証額を下回った年の期首未償却残高のことです。

つまり、“資産の価値” が “保証額を下回った年” の “期首帳簿価額”のことです。

なぜ改定取得価額が必要なのか

それは資産の価値が保証額を下回った年から計算式が以下のように変わるからです。

保証額を下回った年から使用する計算式

<改定償却率を使用する場合の定率法の減価償却費の計算式>
減価償却費=改定取得価額×改定償却率

保証額を下回るまでは

減価償却費=取得価額×償却率

ですが、保証額を下回ると減価償却費の計算式を変えなくてはなりません。

改定取得価額を算出するマクロ

なぜこのマクロが必要だったか

固定資産を管理するシステムを別のシステムに変更する案件があった場合には、乗せ換える先に必須のデータを用意しなければなりません。

しかし、期首帳簿価額はあるけれど改定取得価額がないという場合があり、自力で計算する必要がありました。

改定取得価額を算出するコード

以下のようなExcelデータがあった場合に

A~I列の情報から保証額と期首帳簿価額を計算し、期首帳簿価額が保証額を初めて下回った事業年度と改定取得価額を計算し、J・K列に出力します。

Private Const 耐用年数列 = 3
Private Const 償却方法列 = 4
Private Const 償却率列 = 5
Private Const 供用日付列 = 6
Private Const 取得価額列 = 7
Private Const 期首帳簿価額列 = 8
Private Const 保障率列 = 9
Private Const 定率改定取得価額列 = 10
Private Const 改定事業年度列 = 11
Sub 定率改定取得価額の算出()
        
    ' 最終行の取得
    Dim 最終行 As Long
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    
    ' 2行目から最終行までの繰り返し
    Dim i As Long
    For i = 2 To 最終行
                
        取得価額 = Cells(i, 取得価額列)             ' 取得価額を変数に保存
        償却保証額 = 取得価額 * Cells(i, 保障率列)   ' 償却保証額を変数に保存
        耐用年数 = Cells(i, 耐用年数列)             ' 耐用年数を変数に保存
        供用年 = Year(Cells(i, 供用日付列))         ' 供用日付の年を変数に保存
        供用月 = Month(Cells(i, 供用日付列))        ' 供用日付の月を変数に保存
        
        ' 供用月が4より小さい場合、事業年度は 供用年 - 1
        If 供用月 < 4 Then
            事業年度 = 供用年 - 1
        Else
            事業年度 = 供用年
        End If
        
        ' 各変数を初期化
        期首帳簿価額 = 0
        償却額 = 0
        月 = 0
        月数 = 0
           
        ' 1から耐用年数+1まで繰り返し処理
        Dim k  As Long
        For k = 1 To 耐用年数 + 1
                     
            ' 償却開始年の場合
            If k = 1 Then
            
                期首帳簿価額 = Cells(i, 取得価額列)
                月 = Month(Cells(i, 供用日付列))
                
                ' 償却開始年の月末までの月数を算出
                If 月 >= 1 And 月 <= 3 Then
                    月数 = 4 - 月
                Else
                    月数 = 4 - 月 + 12
                End If
                
                ' 償却開始年の償却額を算出(償却額を12で割り、月数をかける)
                償却額 = 期首帳簿価額 * Cells(i, 償却率列) * (月数 / 12)
                
            ' 償却開始年の次の年以降
            Else
                
                期首帳簿価額 = Application.WorksheetFunction.RoundUp(期首帳簿価額 - 償却額, 0)
                償却額 = 期首帳簿価額 * Cells(i, 償却率列)
                事業年度 = 事業年度 + 1
                
            End If
                                   
            ' 償却額が償却保証額を下回った場合
            If k <> 1 And 償却保証額 > 償却額 Then
                        
                '結果出力
                Cells(i, 定率改定取得価額列) = 期首帳簿価額
                Cells(i, 改定事業年度列) = 事業年度
                GoTo continue
                
            End If
        Next
continue:
    Next
End Sub

解説

1~9行目 項目の列番号を設定

まず初めにExcelの各項目の列番号を定数として設定しています。

26~31行目 供用開始の事業年度を計算

例えば2008/03/01に供用を開始した場合、1~3月の事業年度は前年ですので1を引いて2007年としています。

43~57行目 償却開始年の償却額の計算

例えば、2012年の7月から償却開始する場合は、償却額は年間の償却額 × (9÷12) です。これは、償却を開始していない4月~6月分の3か月分を12から引いて、9か月分償却するという意味合いです。

59~66行目 償却開始年以降の償却額の計算

62行目で期首帳簿価額を計算し、63行目で次年度の償却額を計算しています。

68~76行目 結果の出力

動作確認

J列に改定取得価額、K列に改定事業年度が出力されました。

手計算との比較

以下は以下の資産を手計算で償却した結果です。

取得価額=930,640円

耐用年数=15年

償却率=0.133

保証率=0.143(よって保証額は 930,640 × 0.143 = 42,484円)

こちらも保証額を下まわった改定取得価額は「308,520」、改定事業年度は「2020年」となっていますので、マクロが正しく動作しているようです。

まとめ

今回は固定資産の定率法の計算に必要な改定取得価額を算出するマクロをご紹介しました。

※本マクロは正確に動作するように注意して作成しておりますが、本マクロの使用によって生じた損害は補償できませんので、使用にあたっては十分にご注意ください。

コメント

タイトルとURLをコピーしました