• #Excel
  • #税務
  • #繰越欠損金
  • #LET関数
  • #実務
  • #自動化
  • #わかりやすい
未分類

Excelで繰越欠損金を自動計算!LET関数で見違えるほど分かりやすくなった話

税務の実務でよく使う「繰越欠損金の計算」をExcelで自動化した話を今日はシェアします。

はじめに:繰越欠損金って何?

赤字が出た年があると、その赤字を翌年以降の黒字から引ける仕組み、それが繰越欠損金です。

1年目:1億円の赤字 😭
2年目:2千万円の黒字 → 前年の赤字1億円から2千万円控除
3年目:3千万円の黒字 → 残りの赤字から3千万円控除

これを10年間繰り越せるので、計算が結構複雑になります。


従来の数式の問題点

従来のExcelでは、こんな数式になりがちでした:

=MIN(IF(K11-K18-K19-K20-K21-K22-K23<0,0,K11-K18-K19-K20-K21-K22-K23),K24)

何を計算してるか分かります? 😅

正直、作った本人ですら半年後には理解できなくなるやつです。


LET関数で劇的に改善

Excel 2021から使えるLET関数を使うと、こうなります:

=LET(
    未済額, K20,
    限度額, K15,
    先行控除, SUM(K$31:K32),
    残余限度額, MAX(限度額-先行控除, 0),
    MIN(未済額, 残余限度額)
)

一目で分かるようになりました!


LET関数とは?

LET関数は、計算に名前をつけられる便利な機能です。

使い方

=LET(
    変数名1, 値1,
    変数名2, 値2,
    計算式
)

プログラミングの変数みたいに使えるので、数式が読みやすくなります。


繰越欠損金計算の全体像

ステップ1:今年の控除枠を計算

=LET(
    所得, D9,
    割合, D14,
    限度額, 所得*割合,
    MAX(限度額, 0)
)

計算の流れ

  1. 今年の所得を確認
  2. 割合(50%か100%)をかける
  3. マイナスにならないように保護

ステップ2:古い赤字から順に使う(FIFO)

重要なのは、古い赤字から順に使うこと。

【5年目に1千万円の黒字】
控除枠:1,000万円

↓ まず1年目の赤字から

1年目の赤字 9,900万円
→ 1,000万円控除 ✓
→ 残り8,900万円

↓ 控除枠を使い切ったので終了

2年目の赤字 1億円
→ 控除なし(控除枠がない)

ステップ3:使った分を引いて繰越

=LET(
    期首, E20,
    当期控除, E31,
    繰越, 期首-当期控除,
    MAX(繰越, 0)
)

ポイント1:先行控除の計算

2年目以降の赤字を控除するとき、1年目で使った分を引く必要があります。

従来の方法(ベタ打ち)

先行控除, L30+L31+L32+L33+L34  ← 手作業で追加...😰

改善後(範囲指定)

先行控除, SUM(L$31:L37)  ← 自動で範囲拡張!😊

ポイント

  • $31:絶対参照(常に31行目から)
  • L37:相対参照(コピーすると自動調整)

ポイント2:残りの控除枠を計算

残余限度額, MAX(限度額-先行控除, 0)

やっていること

  • 既に使った分を今年の控除枠から引く
  • マイナスにならないように保護

実際の数式(完全版)

1年目の赤字の控除(シンプル)

=LET(
    未済額, H20,
    限度額, H15,
    MIN(未済額, 限度額)
)
  • 未済額:1年目の赤字の残り
  • 限度額:今年使える枠
  • 小さい方を使う

2年目の赤字の控除(ちょっと複雑)

=LET(
    未済額, H21,
    限度額, H15,
    先行控除, SUM(H$31:H31),
    残余限度額, MAX(限度額-先行控除, 0),
    MIN(未済額, 残余限度額)
)
  • 1年目で使った分を引いて
  • 残りの枠で2年目の赤字を控除

3年目の赤字の控除

=LET(
    未済額, H22,
    限度額, H15,
    先行控除, SUM(H$31:H32),  ← ここだけ変わる
    残余限度額, MAX(限度額-先行控除, 0),
    MIN(未済額, 残余限度額)
)

数式をコピーするだけで、SUM(H$31:H32)SUM(H$31:H33)に自動で変わります!


変数の意味

変数名意味
未済額まだ使えてない赤字の残り9,900万円
限度額今年使える控除の最大額1,000万円
先行控除すでに使った分1,000万円
残余限度額まだ使える枠0円

具体例で理解する

前提

1年目:1億円の赤字
2年目:1億円の赤字
3年目:1億円の赤字
4年目:1億円の赤字
5年目:1,000万円の黒字 ← ここの計算

5年目の計算

1年目の赤字

未済額:9,900万円(前年繰越)
限度額:1,000万円
→ 控除額:1,000万円 ✓

2年目の赤字

未済額:1億円
限度額:1,000万円
先行控除:1,000万円(1年目で使った)
残余限度額:0円
→ 控除額:0円 ✗

3年目以降の赤字

→ すべて0円(控除枠がない)

合計

当期控除額:1,000万円
課税所得:0円(1,000万 - 1,000万)

翌年への繰越

1年目の赤字

期首:9,900万円
控除:1,000万円
繰越:8,900万円 → 6年目へ

2年目の赤字

期首:1億円
控除:0円
繰越:1億円 → 6年目へ(そのまま)

メリットまとめ

1. 可読性 📖

  • セル参照じゃなく、意味のある名前
  • 何を計算してるか一目で分かる

2. メンテナンス性 🔧

  • 数式をコピーするだけで期数拡張
  • 修正が簡単

3. エラー防止 🛡️

  • MAX関数でマイナスを防止
  • MIN関数で過剰控除を防止

使い方

期数を増やしたい

  1. 最後の列をコピー
  2. 新しい列に貼り付け
  3. 期数の数字を変更

これだけ! 数式は自動調整されます。

資本金の基準を変更したい

C12セルの値を変更するだけ。


まとめ

LET関数を使うことで:

  • ✅ 複雑な税務計算が読みやすくなった
  • ✅ メンテナンスが楽になった
  • ✅ エラーが減った

「誰が見ても分かる」って大事ですよね。

特に税務計算みたいな重要な処理は、1年後の自分が理解できる数式を書くのが鉄則です。


ダウンロード

完成版のExcelファイルとドキュメントは以下からどうぞ:

ここにエクセルファイルのダウンロードリンクを挿入

Excel 2021以降をお使いの方は、ぜひLET関数を試してみてください。数式の世界が変わりますよ!


補足:対応バージョン

LET関数が使えるExcel

  • Excel 2021
  • Microsoft 365

それ以前のバージョンでは使えないので注意してください。


最後まで読んでいただき、ありがとうございました!

何か質問があれば、コメント欄でお気軽にどうぞ 😊