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



先日顧問先に訪問した際に雑談していると、今度車を購入する予定だけど、いくらくらい経費になるか(減価償却費として計上できるか)が聞かれることがあったのでそんな時にExcelでざっくり計算できる仕組みがあれば便利だと思い作ってみました。


方法としてはExcel関数にSLN関数やら、VBD関数というものがあるそうで、そちらを使用する方法が一番簡単だと思うんですが、端数の関係で計算結果に誤差がでる(と言っても大した誤差ではないですが。。)ようなので、誤差を少なくするためにマクロ使用して作ってみました。

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

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

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

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



税理士業界では減価償却費の計算は税務ソフトを使用して計算することがほとんどだと思います。

税務ソフトに登録する資産の情報さえ間違わなければ、あとは自動で正確に計算してくれますので。


ただ、冒頭にも書いた出先などで、「さっと、(ざっくり)」計算するのであればExcelを使用して計算するのもアリだと思います。


税務ソフトが事務所に戻らないと使えない等、その場で使用できない場合も考えられますし、その場で使えても試算のために税務ソフトに資産情報を登録するもの手間といえば手間なので。



で、今回作ってみたのは下記の動画にあるように、

  • 取得価額
  • 耐用年数
  • 初年度償却月数(年の途中で資産を購入した場合等、1年まるまる資産を使わなかった場合に必要。)



を記載して「計算実行」ボタンを押すと、各年度の減価償却額が計算され、一覧表になるというもの。




今回のマクロのコードは下記のようなものになります。
もっとシンプルに、かつ、可読性が高く記述できそうな気がものすごくするんですが。。。

Option Explicit

Sub 償却額計算()

'■定額法による計算

'■変数宣言

Dim i As Long
Dim lastyear As Long

lastyear = Range("c6").Value  '耐用年数


'■処理実行部分

    '■エラー処理(取得価額か耐用年数がブランクの場合)


If Range("c5").Value = "" Or Range("c6").Value = "" Or Range("c8").Value ="" Then

    MsgBox "計算に必要なデータが入力されていません。" & vbCrLf & _
            "取得価額、耐用年数、初年度償却月数を入力してください。", vbExclamation
    
    Exit Sub
    
End If


    '■前回の計算結果のクリア


With Range("b13").CurrentRegion.Offset(1, 0)

    .ClearContents
    .ClearFormats
    
End With

    '■年数の記載

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

    Cells(i + 14, 3).Value = Cells(i + 14, 3).Offset(-1, 2)

    Cells(i + 14, 4).Value = Application.WorksheetFunction. _
                             Min(Range("c5") * Range("c7"), Cells(i + 14, 4).Offset(-1, 1).Value - 1)
    
    Cells(i + 14, 5).Value = Cells(i + 14, 3) - Cells(i + 14, 4)
    
Next i

    '■計算結果の表示形式を桁区切りにして罫線を作成する

With Range("b13").CurrentRegion

    .NumberFormatLocal = "#,##0"
    .Borders.LineStyle = xlContinuous
    
End With

End Sub


定額法による減価償却費の計算方法



定額法による減価償却費の計算方法については国税庁のHPよると

定額法とは、次の算式により計算した金額を各事業年度の償却限度額とする方法です。
(算式)
定額法の償却限度額=取得価額×定額法の償却率(注)

(注) 「定額法の償却率」は耐用年数省令別表第八に規定されています。

https://www.nta.go.jp/taxes/shiraberu/taxanswer/hojin/5410.htm


と、計算するように決められているので、このルールに沿うようにマクロを作成すればいいわけです。

定額法の計算に必要な要素としては「取得価額」、「耐用年数(償却率)」、購入した1年目に何カ月間事業で使用したかを示す「初年度償却月数」の3つになります。



なのでまずExcelにこれらの要素を記載するセルを準備しました。





↑の画像のうち左側の赤枠内の「取得価額」、「耐用年数」欄については手動で金額や年数を入力するので数式等は記載していません。


「初年度償却月数」欄についてはリスト機能を使用して1~12の数字を指定するように設定しています。


「償却率」欄の1箇所だけについては数式を入力して償却率を計算しています。数式の内容は上記画像の上側赤枠内の数式入力バー部分を参照してください。


これはroundup関数を使用して小数点3位未満を切り上げるように指定していますが、これは国税庁に記載された償却率がそういう仕様になっているためです。減価償却に関する規定でそういうルールになっているはず。

間違っていたらすいません。


それからB13セル~E13セルについても同様にあらかじめセルにタイトルを記載しておき、セルに色をつけています。


マクロ以外の準備としては以上で終了です。


Excelマクロで定額法による減価償却費の計算を行うコード内容の説明



解説というほどのもんでもないですが、今回のマクロを作る時に気を付けた点として3つあげておきます。


まず1つめは「取得価額」のセル「耐用年数」のセル「初年度償却月数」のセルに何もデータが入力されていない場合の処理についてです。


それぞれのセルに減価償却の計算に必要なデータが記載されていない状態でマクロを実行すると計算結果がおかしかったり、計算自体ができずにエラーになってしまいます。


なので


ifステートメントで「取得価額」のセル「耐用年数」のセル、「初年度償却月数」のセルに何もデータが入力されていない場合は注意メッセージがでるように設定しています。


下記の画像の赤枠部分がそれになります。







2つ目は初年度の償却額の計算部分について。



初年度については資産を事業年度の途中で購入して使い始めた場合には使用した月数で按分(あんぶん)計算が必要になりますのでその按分計算をマクロに記述する必要があります。



下記の画像の赤枠部分がそれになります。





最後に2年目以降の償却額の計算部分について。


償却計算が終わりに近づく(耐用年数が終わりに近づく)と備忘記録的に1円残すという細かなルールがあるのでその点をマクロに記述する必要があります。


なので、

  • 普通に計算した償却額


  • 期首(事業年度の初日の)帳簿価額から1円引いた金額



    を比較して低い方の金額を償却費としてセルに記載するように記述しています。今回はWorksheetfunctionのmin関数を使用して低い金額を判定しています。


    下記の画像の赤枠部分がそれになります。



こんな感じです。




まとめ



税務ソフトの減価償却ソフトを使用するのは一番間違いがなく、かつ、確実なのは誰がみても明らかなんですがが、ざっくりとした試算くらいであればこのマクロか、Excelの関数(SLN関数やら、VBD関数やら)を利用するもの役にたつかもしれないですね。


記事の最後に言うのもなんですが、そもそもマクロ使わずに普通にIF関数とかのExcel関数を使っても同じことはできるのでそっちで計算しても全然OKです。



うん。むしろそっちの方がいい。


出先でネット環境があるのであれば、Googleで検索すると、減価償却額の計算ができるサイトが多数あるのでそっちを使うのもいいでしょう。(実際このマクロを作成した後にGoogleで検索して見つけたCASIOの減価償却の計算サイトをつかって検算しています。)




うん。絶対そっちの方がいい。




定額法の計算方法は割とシンプルなんでこのマクロを作るのはそこまで面倒ではなかったのですが、定率法の場合計算方法が少し複雑になるのでマクロを作るのは難易度があがりそうです。


次回は定率法による減価償却計算をマクロで作成してみます。(誰か興味あるんですかね??)




【本日の近況報告】

以前からExcel上での動作を動画にしてブログに上げたいと思っていたのですが、やり方をどうするかよくわからなくて今までほったらかしにしていました。

が、

PowerPointの機能を使うと簡単に動画作成できることが最近わかったので今回の記事で試してみました。

次は動画内のマウスポインターを黄色く表示してみようと思います。「kokomite」というフリーソフトを使用するとできるようになるみたいです。

【本日の1曲】

THE REMAINS / DON’T LOOK BACK

Spotifyで適当に音楽流してたら流れてきた一曲。ギターのジャキジャキした音の感じやボーカルの不良感がカッコいい。1960年代の曲だそうで、全然そんな感じしないですね。ガレージロックの名曲ではないでしょうか。

少し古いかもしれませんが、Mando diaoが好きな人は気にいるんじゃないでしょうか。
Mando diaoまだ現役でやってるのだろうか。。。

アルバムのジャケットも細っそいスーツを着こなしてカッコいいですね。
モッズ好きにもロック好きにも受けそうな感じがします。


ビートルズの前座もしてたみたいです。