年末調整の時期になると、「還付額がいくらになるのか、自分のExcelで確かめたい」と思うことはありませんか。給与計算ソフトを使っていない少人数の事業所だと、なおさらですよね。
ところが、いざ計算しようとすると「源泉徴収税額表の引き方が分からない」「VLOOKUPで組んでみたのに計算が合わない」とつまずきがちです。手作業のまま放置すると、毎年12月に同じ悩みを繰り返すことになります。最悪の場合、還付額を間違えて従業員に説明できないという事態にもなりかねません。
この記事では、年末調整の還付額をExcelで計算する手順を、計算フローの全体像から順に解説します。源泉徴収税額表をVLOOKUP(表から値を探し出す関数)で引く数式の書き方、XLOOKUPへの切り替え方法、「計算が合わない」原因別の対処法まで取り上げます。総務・経理を兼務している方でも自作シートを完成できるようにまとめたので、一緒に組み立てていきましょう。
対応バージョン: VLOOKUP・IF・IFERROR・ROUNDDOWN は Excel 全バージョン(Web版含む)で使用できます。XLOOKUP は Microsoft 365 / Excel 2021 以降 / Excel for the web で使用可能です。
税額表の数値について(重要): 税額表・税率・控除額は毎年改正されます。本記事では「計算の仕組みと数式設計」だけを解説し、具体的な税額の数値は固定しません。実際の計算では、国税庁が毎年公表する最新版(令和○年分の年末調整のための各表)を必ず参照してください。記事中の数式例で出てくる数値は、すべて説明用の仮の値です。
年末調整をExcelで計算する全体像(6ステップ)
まずは全体像をつかみましょう。年末調整の計算(1年間の所得税を精算する手続き)は、大きく6つのステップに分かれます。Excelで自動化するときも、この流れをそのままセルの並びに置き換えるだけです。
各ステップは「前のステップの結果を次のステップの入力に使う」という形でつながっています。だから1か所だけ作るのではなく、全体の流れとして設計するのがポイントです。次の表で、計算のつながりを確認してください。
| ステップ | やること | Excelでの処理 |
|---|---|---|
| ① 給与総額の集計 | 1年間の給与・賞与の合計を出す | SUM で合算 |
| ② 給与所得控除後の金額 | 給与総額から給与所得控除(給与所得者の必要経費にあたる控除)を引いた金額を求める | 「給与所得控除後の給与等の金額の表」を VLOOKUP で引く |
| ③ 課税給与所得金額 | ②から所得控除合計(社会保険料・配偶者・扶養・基礎控除など)を引く(1,000円未満切り捨て) | 引き算 + ROUNDDOWN |
| ④ 算出所得税額 | 「算出所得税額の速算表」で 課税給与所得金額 × 税率 − 控除額 を計算する | 速算表を VLOOKUP で引く |
| ⑤ 年調年税額 | ④に 102.1%(復興特別所得税込み)を掛ける(100円未満切り捨て) | 掛け算 + ROUNDDOWN |
| ⑥ 過不足額(還付額) | ⑤から1年間の源泉徴収税額合計を引く | 引き算 |
⑥の結果がマイナスなら還付(戻ってくる)、プラスなら追徴(追加で徴収)です。住宅借入金等特別控除(住宅ローン控除)がある場合は、④の算出所得税額から差し引いてから⑤に進みます。
ここで大事なのは、年末調整で使う表は「月額表」ではないという点です。毎月の源泉徴収で使う月額表と、年末調整で使う表は別物なので、混同しないようにしましょう。詳しくは次のセクションで説明しますね。
源泉徴収税額表をVLOOKUPで引く方法
年末調整で関数の出番になるのは、主にステップ②と④です。どちらも「金額に応じて表から該当する行を探す」という処理で、VLOOKUPの近似一致がぴったりはまります。
月額表ではなく「年末調整用の表」を使う
最初に押さえておきたいのが、表の使い分けです。源泉徴収税額表にはいくつか種類があり、用途がそれぞれ違います。混同すると、計算が根本からずれてしまいます。
- 月額表・賞与の税額表: 毎月の給与や賞与を支払うときに、その都度引く表です。年末調整では使いません。
- 給与所得控除後の給与等の金額の表: 年末調整専用です。1年間の給与総額から、控除後の金額を求めるのに使います(ステップ②)。
- 算出所得税額の速算表: こちらも年末調整専用です。課税給与所得金額・税率・控除額の3列構成で、ステップ④の税額計算に使います。
年末調整で引くのは、後ろの2つです。月額表は毎月の処理用なので、年末調整シートには取り込まなくて大丈夫ですよ。
近似一致(TRUE)で閾値を引く仕組み
税額表は「○円以上△円未満ならこの値」という階段状の構造になっています。こういう範囲の引き当てには、VLOOKUPの近似一致モードを使います。
VLOOKUPの第4引数を TRUE(または省略)にすると、近似一致になります。これは「検索値以下で最も大きい値」を返すモードです。つまり、表の各帯の「下限値」を左端の列に並べておけば、給与額や課税所得がどの帯に入るかを自動で判定できます。
近似一致には1つだけ絶対条件があります。表の左端の列が昇順(小さい順)に並んでいることです。これを守らないとエラーは出ませんが、静かに間違った値を返してしまいます。注意してくださいね。
数式の書き方(速算表を引く例)
実際の数式を見てみましょう。ステップ④の算出所得税額を求める例です。速算表を 税額表!A:C の範囲に取り込んだとします(A列=下限額、B列=税率、C列=控除額)。
# 課税給与所得金額(B3セル)に対応する税率を引く
=VLOOKUP(B3, 税額表!$A:$C, 2, TRUE)
# 同じく控除額を引く
=VLOOKUP(B3, 税額表!$A:$C, 3, TRUE)
2番目の引数で列番号を指定します。2 なら範囲の2列目(税率)、3 なら3列目(控除額)です。範囲はコピーしてもズレないよう $ で固定しておくと安心です。
この2つを組み合わせて、算出所得税額の式はこう書けます。
# 算出所得税額 = 課税給与所得金額 × 税率 − 控除額
=B3 * VLOOKUP(B3, 税額表!$A:$C, 2, TRUE) - VLOOKUP(B3, 税額表!$A:$C, 3, TRUE)
具体的な数値で確認してみましょう。課税給与所得金額が 2,500,000円、その帯の税率が 10%、控除額が 97,500円だったとします(※これらは説明用の仮の値です。実際は最新の公式表を参照してください)。
2,500,000 × 0.10 − 97,500 = 250,000 − 97,500 = 152,500円
算出所得税額は 152,500円になります。電卓で計算するのと同じ結果が、VLOOKUPで自動的に出せるわけですね。
ステップ③と⑤の端数処理(ROUNDDOWN)
年末調整には、国税庁が定めた端数処理のルールがあります。これを入れ忘れると数十円〜数百円のズレが出るので、必ず数式に組み込みましょう。ROUNDDOWN(指定した桁数で切り捨てる関数)を使います。
# ステップ③ 差引課税給与所得金額(1,000円未満切り捨て)
=ROUNDDOWN(給与所得控除後の金額 - 所得控除合計, -3)
# ステップ⑤ 年調年税額(復興特別所得税込み・100円未満切り捨て)
=ROUNDDOWN(算出所得税額 * 1.021, -2)
ROUNDDOWNの2番目の引数がマイナスなのがポイントです。-3 で1,000円未満(下3桁)を、-2 で100円未満(下2桁)を切り捨てます。普段あまり使わない指定ですが、年末調整ではこれが正解ですよ。
税額表は毎年更新される:国税庁公式の参照方法
最後に大切な注意点です。給与所得控除後の金額の表も、算出所得税額の速算表も、毎年改正されます。基礎控除の見直しなどで金額が変わるので、去年のシートをそのまま使い回すと計算が合わなくなります。
数式の設計(VLOOKUPやROUNDDOWNの組み方)は毎年同じで構いません。変わるのは「税額表!」に貼り付ける表の中身だけです。毎年12月の作業前に、国税庁の「年末調整がよくわかるページ」から最新版の表をダウンロードして、表の範囲だけ差し替えてください。仕組みを一度作っておけば、翌年からは数値の入れ替えで済みますよ。
VLOOKUP vs XLOOKUP:使える関数の切り替え対比表
ここまでVLOOKUPで解説してきましたが、Microsoft 365 や Web版のExcelをお使いなら、XLOOKUP(VLOOKUPの後継にあたる新しい検索関数)という選択肢もあります。どちらでも税額表は引けますが、書き方とエラー処理が少し違います。下の表で比較してみましょう。
| 比較軸 | VLOOKUP | XLOOKUP |
|---|---|---|
| 使えるバージョン | 全バージョン(Web版含む) | Microsoft 365 / Excel 2021 以降 / Web版 |
| 近似一致(閾値引き)の指定 | 第4引数を TRUE(または省略) | 第5引数(match_mode)を -1 |
| 昇順ソートの必要 | 必須(守らないと誤答) | 不要(match_mode=-1ならソート不問) |
| エラー時の代替値 | IFERROR で囲む | 第4引数(if_not_found)で直接指定 |
VLOOKUPは全バージョンで使えるのが強みです。職場のExcelのバージョンがバラバラなら、VLOOKUPで統一しておくと安全ですよ。一方XLOOKUPは、昇順ソートが不要でエラー処理も式の中に書けるので、シートが少しすっきりします。
Microsoft 365 / Web版でXLOOKUPを使う書き方
XLOOKUPで速算表の税率を引く例です。VLOOKUPと違って、検索する列と返す列を別々に指定します。
# 課税給与所得金額(B3)に対応する税率を引く(match_mode=-1で閾値以下の最大値)
=XLOOKUP(B3, 税額表!$A:$A, 税額表!$B:$B, , -1)
# 控除額を引く
=XLOOKUP(B3, 税額表!$A:$A, 税額表!$C:$C, , -1)
引数の並びは「検索値、検索範囲、戻り範囲、見つからないとき、一致モード」です。4番目を空にしているのは、次で説明するエラー処理を入れない場合の書き方です。5番目の -1 が「検索値以下で最も近い値を返す」という指定で、これがVLOOKUPの TRUE に相当します。
エラー処理の書き方(IFERROR vs XLOOKUP第4引数)
万が一、表に該当する帯がなくてエラーになったとき、画面に #N/A が出ると見栄えが悪いですよね。エラー処理を入れておくと、分かりやすいメッセージに置き換えられます。
# VLOOKUP の場合:IFERROR で全体を囲む
=IFERROR(VLOOKUP(B3, 税額表!$A:$C, 2, TRUE), "表を確認してください")
# XLOOKUP の場合:第4引数に直接書ける
=XLOOKUP(B3, 税額表!$A:$A, 税額表!$B:$B, "表を確認してください", -1)
VLOOKUPは式全体をIFERROR(エラーなら別の値を返す関数)で囲む必要があります。XLOOKUPなら4番目の引数に書くだけなので、こちらのほうがシンプルです。どちらでも結果は同じなので、お使いの環境に合わせて選んでくださいね。
計算が合わないときの原因別トラブル対処
「数式は入れたのに、手計算と金額が合わない」というのは、年末調整シートでいちばん多い悩みです。原因はだいたいパターンが決まっています。症状から原因を特定して、修正していきましょう。
近似一致(TRUE)の指定漏れで#N/Aが出る
VLOOKUPの第4引数を FALSE にしてしまうと、完全一致モードになります。税額表に検索値とぴったり同じ金額が載っていることはまずないので、結果は #N/A になります。
税額表のような閾値引きは、近似一致が正解です。第4引数を TRUE に直してください。XLOOKUPで #N/A が出る場合は、match_mode(第5引数)の指定漏れが原因です。省略するとデフォルトの完全一致になってしまうので、-1 を必ず付けましょう。
# NG: 完全一致で #N/A になる
=VLOOKUP(B3, 税額表!$A:$C, 2, FALSE)
# OK: 近似一致に修正
=VLOOKUP(B3, 税額表!$A:$C, 2, TRUE)
表が昇順に並んでいなくて誤った金額が返る
VLOOKUPの近似一致でいちばん厄介なのが、これです。表の左端の列が昇順になっていないと、エラーは出ないのに間違った値を返します。#N/A のような分かりやすい合図がないので、気づきにくいんですよね。
税額表を貼り付けたら、左端の「下限額」の列が小さい順に並んでいるか確認してください。並び替えが必要なら、表の範囲を選んで左端の列を昇順でソートします。XLOOKUPの match_mode=-1 を使っている場合はソート不要なので、こちらに切り替えるのも手です。
端数処理(ROUNDDOWN)の入れ忘れで数百円ズレる
金額が「あと少しのところで合わない」ときは、端数処理を疑いましょう。差引課税給与所得金額の1,000円未満切り捨てや、年調年税額の100円未満切り捨てを省略していると、わずかにズレます。
該当のセルに ROUNDDOWN が入っているか確認してください。ステップ③は -3、ステップ⑤は -2 です。手計算とExcelの結果を1ステップずつ突き合わせると、どこで端数処理が抜けているか見つけやすいですよ。
給与所得控除や税額表の年度違い
数式は正しいのに大きくズレる場合は、貼り付けた表の年度を確認しましょう。去年の表をそのまま使っていると、改正された控除額とずれて、結果が合いません。
国税庁の最新版の表に差し替えれば解決します。数式はそのままで、表の中身だけ入れ替えれば大丈夫です。毎年この確認をルーティンに組み込んでおくと、ミスを防げますよ。
それでも合わないときは
ここまで試しても合わない場合は、ステップごとに中間結果を表示させて、どこで食い違うかを切り分けてください。給与所得控除後の金額、課税給与所得金額、算出所得税額を別々のセルに出しておくと、原因の特定がぐっと楽になります。1か所ずつ手計算と照らし合わせれば、必ず原因にたどり着けますよ。
年末調整Excelシートの完成イメージと数式のつながり
最後に、6ステップを1枚のシートにつなげた設計例を見てみましょう。各ステップの結果を次のステップが参照する形にすると、入力値を変えるだけで還付額まで自動更新されます。
セル参照で6ステップをつなぐ設計例
たとえば次のようにセルを割り当てます(実際の表の配置に合わせて調整してください)。
# B1: 給与総額(手入力 または 月別給与のSUM)
=SUM(月別給与の範囲)
# B2: 給与所得控除後の金額(ステップ②)
=VLOOKUP(B1, 控除後表!$A:$B, 2, TRUE)
# B3: 課税給与所得金額(ステップ③・1,000円未満切り捨て)
=ROUNDDOWN(B2 - 所得控除合計, -3)
# B4: 算出所得税額(ステップ④)
=B3 * VLOOKUP(B3, 速算表!$A:$C, 2, TRUE) - VLOOKUP(B3, 速算表!$A:$C, 3, TRUE)
# B5: 年調年税額(ステップ⑤・復興特別所得税込み・100円未満切り捨て)
=ROUNDDOWN(B4 * 1.021, -2)
# B6: 過不足額(ステップ⑥・マイナスが還付)
=B5 - 年間源泉徴収税額合計
説明用の仮の値で最後まで通してみます。給与所得控除後の金額が 4,000,000円、所得控除合計が 1,500,000円、年間源泉徴収税額合計が 170,000円だとしましょう(※すべて説明用の仮の値です)。
B3 = 4,000,000 − 1,500,000 = 2,500,000円(1,000円未満なし)
B4 = 2,500,000 × 0.10 − 97,500 = 152,500円
B5 = 152,500 × 1.021 = 155,702.5 → 155,700円(100円未満切り捨て)
B6 = 155,700 − 170,000 = −14,300円
B6がマイナス14,300円なので、14,300円の還付という結果になります。一度この型を作っておけば、来年は税額表の差し替えと入力値の更新だけで済みますよ。
源泉徴収票への転記と確定申告との違い
年末調整で算出した年調年税額や還付額は、最終的に源泉徴収票の各欄へ転記します。転記もExcelの関数で自動化できるので、計算シートと票を連動させたい方は源泉徴収票の見方とExcelでの作り方もあわせてご覧ください。各欄をどの数式で埋めるかをまとめています。
なお、年末調整では扱えない控除もあります。たとえば医療費控除は所得控除のひとつですが、年末調整の対象外で、確定申告で申告する必要があります。年末調整と確定申告の住み分けが気になる方は、医療費控除をExcelで集計する方法で集計の手順を確認しておくと、確定申告の準備もスムーズになりますよ。
まとめ
年末調整の還付額をExcelで計算する手順を、6ステップの全体像から関数の組み方、トラブル対処まで通して解説しました。ポイントを振り返っておきましょう。
- 計算は6ステップ。給与総額 → 給与所得控除後の金額 → 課税給与所得金額 → 算出所得税額 → 年調年税額 → 過不足額(還付額)の順につなぐ
- 税額表は近似一致で引く。VLOOKUPなら第4引数
TRUE、XLOOKUPなら第5引数-1 - 端数処理を忘れない。ステップ③は ROUNDDOWN の
-3、ステップ⑤は-2 - 計算が合わないときは、近似一致の指定・昇順ソート・端数処理・表の年度を順に確認する
- 税額表の数値は毎年改正されるので、国税庁の最新版を毎年差し替える
数式の設計は一度作れば毎年使い回せます。むずかしく見えるかもしれませんが、やっていることは「表から値を探して、引き算と掛け算をする」だけです。この記事のセル設計を参考に、ぜひご自身のシートを完成させてみてくださいね。
