定率法による減価償却費の計算をするマクロを作成してみた件について。




前回、定額法による減価償却費の計算を無駄にマクロで作ってみましたが、今回は定率法による減価償却費の計算を無駄にマクロで作ってみました。


定率法にしかない特殊な計算方法をマクロのコードに反映させる必要があり、結果として前回より手数が増えます。


前回の記事はこちら。

定額法による減価償却費の計算をするマクロを作成してみた件について。




今回の記事は「定率法」のみの計算をしています。平成24年4月1日以降取得のいわゆる200%定率法です。

また、法人税の論点におけるいわゆる「設立事業年度が1年未満の場合」における償却率の調整計算には対応していません。

償却額の計算における1円未満の端数処理(法人税は1円未満切り捨て、所得税は1円未満切り上げ)については考慮していません。



Excelマクロで定率法による減価償却費の計算を行う。



マクロを実行すると下記のように動作します。




今回のマクロのコードは下記のようなものになります。改定償却に対応するようにコードを記述する必要があるので、前回の定額法による計算よりもコードが少し長くなっています。



もっとシンプルに、かつ、可読性が高く記述できそうな気がものすごくするんですが。。。
(前回の記事でも同じこと書いたような気が、、、)



Option Explicit
Sub 定率法による償却額計算()
'■定率法による計算
'■変数宣言
Dim i As Long
Dim j As Long
Dim lastyear As Long
Dim kaiteisyutoku As Range
lastyear = Range("c6").Value  '耐用年数
'■前回の計算結果のクリア
With Range("b13").CurrentRegion.Offset(1, 0)
    .ClearContents
    .ClearFormats
    
End With
'■処理実行部分
    '■エラー処理(取得価額か耐用年数がブランクの場合)
If Range("c5").Value = "" Or Range("c6").Value = "" Then
    MsgBox "計算に必要なデータが入力されていません。" & vbCrLf & _
            "取得価額と耐用年数を入力してください。", vbExclamation
    
    Exit Sub
    
End If
     '■年数の記載
For i = 1 To lastyear + 1
    
    Cells(i + 13, 2).Value = i
    
Next i
    
    '■初年度の償却額計算実行
    
    
Range("c14").Value = Range("c5").Value
Range("d14").Value = Range("c5") * Range("c7") * Range("c8") / 12
Range("e14").Value = Range("c14") - Range("d14")
   
    '■2年目以降の償却額計算実行
    
For i = 1 To lastyear
    
        
    If Cells(i + 13, 5).Value * Range("c7").Value >= Range("c11").Value Then
    
    
        '■通常の償却の場合
        
        Cells(i + 14, 3).Value = Cells(i + 13, 5).Value
        
        Cells(i + 14, 4).Value = Cells(i + 13, 5).Value * Range("c7").Value
        
        Cells(i + 14, 5).Value = Cells(i + 14, 3).Value - Cells(i + 14, 4).Value
        
    
    Else
    
    
    
        '■改訂償却に該当する場合
    
           
        Cells(i + 14, 3).Value = Cells(i + 13, 5).Value
        
        j = j + 1
        
        
        Set kaiteisyutoku = Cells(i + 14, 3).Offset(-j, 2) '改訂取得価額の変数格納
        
        
        Cells(i + 14, 4).Value = Application.WorksheetFunction. _
                                 Min(Cells(i + 14, 4).Offset(-1, 1) - 1, kaiteisyutoku.Value * Range("c9").Value)
                                 
        Cells(i + 14, 5).Value = Cells(i + 14, 3).Value - Cells(i + 14, 4).Value
        
    
        
    End If
Next i
    '■計算結果を桁区切りして罫線作成
With Range("b13").CurrentRegion
    .NumberFormatLocal = "#,##0"
    .Borders.LineStyle = xlContinuous
    
End With
End Sub


定率法による減価償却の計算のやりかた方とその特徴



国税庁のHPによると定率法の計算方法は下記のようになっています。

国税庁HPより引用




定率法による減価償却費の計算の特徴の1つとして、調整前償却額(厳密には違いますが、定率法で普通に償却額を計算するイメージで大体OKです。つまり期首帳簿価額×償却率。)が償却保証額を下回った場合には計算方法がガラりと変わるという点があります。


調整前償却額が償却保証額より大きい場合は「期首帳簿価額×償却率」で償却額を計算し(パターン①)、そうじゃない場合には改定取得価額に改定償却率をかけて減価償却費を計算する(パターン②)ことになります。これは定額法の計算にはなかった定率法独特の計算方法になります。




イメージとしてこんな感じでしょうか?


調整前償却額が償却保証額より大きい場合(パターン①)








そうじゃない場合(パターン②)




定率法の計算に必要な「改訂償却率」「償却保証率」「償却保証額」の準備をする(別シートのデータベースからVLOOKUP関数で連動する)



今回のExcelブックを見てもらうと前回の定額法の計算時にはなかったセルとして新しく改定償却率(B9セル)、償却保証率(B10セル)、償却保証額(B11セル )と言う3つのセルを追加しています。





こちらの3つのセルのうち、「C9セル」と「C10セル」については「C6セル」に入力された耐用年数に該当する各種の率を別シートに記載した定率法の償却率のデーターベースからVlookup関数で連動させています。

別シートに償却率や改訂償却率などを記載したシートを作成する。


これによって、定率法の計算に必要な「改訂償却率」、「償却保証率」、「償却保証額」の準備ができます。


コードの解説




今回は前回の定額法のコードの時よりも変数を追加しています。追加した変数は2つ。

変数「j」と改訂取得価額を格納するための変数「kaiteisyutoku」です。



で、次は上で説明した定率法の独特の計算のやり方をマクロのコードに記述していきます。



具体的には2年目以降の減価償却費の計算の時に毎回毎回、調整前償却額と償却保証額の判定を行い、償却保証額を下回っているかどうかをマクロで判断させています。(1年目の減価償却の計算でいきなりパターン②の計算方法をすることは多分ないので。)



その結果、下回っていない場合には通常の減価償却費の計算を行い。



もし下回っている場合には改定取得価額と改定償却率を用いて計算するようにします。



で、下記の箇所が調整前償却額と償却保証額の判定を行っている部分になります。





判定の結果、下回っていない場合には通常の減価償却費の計算を行いますが、その部分がこちら。








一方、判定の結果、下回っている場合には改定取得価額と改定償却率を用いて計算しますが、その部分がこちら。





ポイントは変数「kaiteisyutoku」に「改定取得価額」を格納する点でしょうか。



今回のやり方としてはoffset関数と変数「j」を使用して、改訂取得価額を「毎回」変数「kaiteisyutoku」に格納しなおしています。格納する値自体は変わらないですが。



For~Nextステートメントの中に改訂償却を行う場合のコードが記載されているため、この方法でないと自分のスキルでは「改訂取得価額」を変数に格納することができませんでした。



結果として可読性が低く見にくい、かつ醜いコードになってしまったように感じます。



それ以外のコードの部分については定額法のコードと変わりないと思いますので説明は割愛します。



まとめ



前回の定額法による減価償却費の計算で作成したマクロをベースにして定額法と定率法の計算方法の違いによる部分を反映させて今回マクロを作ってみました。


別にマクロを使用して計算する必要は一切ないのでExcel関数やネットで検索した減価償却サイトを利用して計算しても全然問題ないです。


どうしてもマクロで計算したいこだわりがあるニッチな方の参考になれば幸いです。








【本日の近況報告】

先日から椅子から立ち上がる際に左の膝が痛みます。右の膝は全然痛みはなく、左だけ痛いです。

どこかでぶつけた記憶もないですし、見た感じアザなどもないので、なんでだろうと思っていたんですが。

自分の行動を思い返してみて気づきました。多分これだと。

子供と2日連続で扇町公園に行った際に滑り台の階段を何往復もしたからだと。

コロナウイルスの影響で運動不足になり、確実に体が劣化しているんでしょう。
湿布貼って様子見ます。

【本日の1曲】

Maritime / Guns of Navarone

アメリカのインディーロックバンド、マリタイムの一曲。この曲はポップな感じの中にエモが混ざっているような、そんな一曲。

久しぶりに思い出してYoutubeでPV見てみたらボーカルの人がハゲてることを知るという。。

weezerとかget up kidsとかファウンテインズオブウェインが好きな人とか気にいると思うんですが、いかがでしょうか?