未分類
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)
)
計算の流れ:
- 今年の所得を確認
- 割合(50%か100%)をかける
- マイナスにならないように保護
ステップ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関数で過剰控除を防止
使い方
期数を増やしたい
- 最後の列をコピー
- 新しい列に貼り付け
- 期数の数字を変更
これだけ! 数式は自動調整されます。
資本金の基準を変更したい
C12セルの値を変更するだけ。
まとめ
LET関数を使うことで:
- ✅ 複雑な税務計算が読みやすくなった
- ✅ メンテナンスが楽になった
- ✅ エラーが減った
「誰が見ても分かる」って大事ですよね。
特に税務計算みたいな重要な処理は、1年後の自分が理解できる数式を書くのが鉄則です。
ダウンロード
完成版のExcelファイルとドキュメントは以下からどうぞ:
ここにエクセルファイルのダウンロードリンクを挿入
Excel 2021以降をお使いの方は、ぜひLET関数を試してみてください。数式の世界が変わりますよ!
補足:対応バージョン
LET関数が使えるExcel:
- Excel 2021
- Microsoft 365
それ以前のバージョンでは使えないので注意してください。
最後まで読んでいただき、ありがとうございました!
何か質問があれば、コメント欄でお気軽にどうぞ 😊