エクセル・スプレッドシートで消費税を計算する式
エクセルやGoogle スプレッドシートで消費税を出すときは、「金額*10/100」「税込*10/110」のように整数で掛けて割り、ROUNDDOWN(切り捨て)・ROUND(四捨五入)・ROUNDUP(切り上げ)で1円未満を処理する式をおすすめします。どの方式で端数を処理しているかが式から読み取れ、ほかの仕組みに移しても結果が変わらないためです。請求書では、SUMIFで税率ごとに合計してから1回だけ端数処理します。Google スプレッドシートでも同じ関数が使えます。
1つの金額なら消費税計算、請求書なら請求書の消費税計算で、式の結果と同じになるかを確かめられます。
このページの式の前提
例では、A2に金額を入れ、ほかのセルに式を書きます。金額は1円単位の整数で入れてください。ROUNDDOWNなどの最後の「0」は、小数点以下を0桁にする、つまり1円未満を処理するという意味です(Microsoft ROUNDDOWN 関数)。
税抜から消費税額と税込を出す
- 消費税額(10%・切り捨て):
=ROUNDDOWN(A2*10/100,0) - 税込金額(10%・切り捨て):
=A2+ROUNDDOWN(A2*10/100,0) - 8%なら、10を8に変えます:
=ROUNDDOWN(A2*8/100,0)、=A2+ROUNDDOWN(A2*8/100,0)
A2が1234なら、10%の消費税額は123、税込は1357です。A2が999なら、8%の消費税額は79、税込は1078です。
端数処理の3つの関数
同じ式の関数を入れ替えると、方式を変えられます。下の表はA2が1005(10%)のときです。
| 方式 | 式(10%の消費税額) | A2が1005のとき |
|---|---|---|
| 切り捨て | =ROUNDDOWN(A2*10/100,0) | 100 |
| 四捨五入 | =ROUND(A2*10/100,0) | 101 |
| 切り上げ | =ROUNDUP(A2*10/100,0) | 101 |
表の結果は、このサイトの計算と同じです。
どの方式を使うかは自由で、インボイスに書く消費税額も、切り上げ・切り捨て・四捨五入のどれでもよいとされています(国税庁 インボイスQ&A 問57)。
税込から税抜を逆算する
- 消費税額(10%・切り捨て):
=ROUNDDOWN(A2*10/110,0) - 税抜金額(10%・切り捨て):
=A2-ROUNDDOWN(A2*10/110,0) - 8%なら:
=ROUNDDOWN(A2*8/108,0)、=A2-ROUNDDOWN(A2*8/108,0)
消費税額を先に出して税込から引く方法で、このサイトの逆算と同じです。A2が11000なら消費税額1000・税抜10000、A2が1000なら消費税額90・税抜910です。この910から税込を出し直すと1001になり、元の1000に戻りません。
元に戻らないのは式の誤りではなく、税込1,000円ちょうどになる税抜金額が無いためです。理由は1円ずれる理由で説明しています。
税抜を直接出す =ROUNDDOWN(A2*100/110,0) は、国税庁の問59の例(580円×100/110≒527円)と同じ方法です。消費税額を先に出す式とは1円違うことがあり、A2が580なら、税抜を直接出す式は527、消費税額を先に出す式は528です。
1.1で割る式について
「=A2/1.1」のように1.1で割る式は、Google スプレッドシートでは、整数で掛けて割る式と同じ結果になりました。=ROUNDDOWN(110/1.1,0) は100です。税込1円から10万円までの10万通りで、「÷1.1して切り捨て」「×1.1して切り上げ」「÷1.08して切り捨て」「×1.08して切り捨て」を整数の式と比べ、違いは0通りでした(2026年10月27日に確認)。エクセルでは確かめていません。
一方、このサイトと同じJavaScriptのように、小数のまま計算するプログラムではずれます。110÷1.1は99.99999999999999になり、切り捨てると99円です。同じ10万通りで、「÷1.1して切り捨て」は4,174通り、「×1.1して切り上げ」は5,524通りで1円違いました。
表計算の式をあとで会計ソフトやマクロ、プログラムに移すことがあるなら、はじめから整数で掛けて割る式にしておくと、移した先でも同じ結果になります。
請求書:税率ごとに合計してから1回だけ端数処理する
明細の金額をA2〜A51に、税率をB2〜B51に入れる例です。税率は「10」か「8」の数字で入れます。
- 10%対象の合計:
=SUMIF(B2:B51,10,A2:A51) - 10%の消費税額(税抜で入力・切り捨て):
=ROUNDDOWN(SUMIF(B2:B51,10,A2:A51)*10/100,0) - 8%の消費税額(税抜で入力・切り捨て):
=ROUNDDOWN(SUMIF(B2:B51,8,A2:A51)*8/100,0) - 明細を税込で入れた場合は、
*10/100を*10/110に、*8/100を*8/108に変えます。
明細ごとに =ROUNDDOWN(A2*B2/100,0) を出してSUMで足す方法は、インボイスに書く消費税額としては認められません(問57)。
問57の参考の表の金額(10%は11345と12549、8%は9987と12345、税抜)で比べると、税率ごとに1回なら消費税額は2389と1786、明細ごとに足すと2388と1785になります。
Google スプレッドシートとの違い
ROUND・ROUNDDOWN・ROUNDUP・SUMIFはGoogle スプレッドシートにもあり、引数の並びも同じです(Google スプレッドシートの関数リスト)。このページの式は、そのまま書けます。このページの計算例は、Google スプレッドシートに式をそのまま入れて確かめた結果です(2026年10月27日)。
よくある質問
税込の明細の合計から、消費税だけを出すには
10%なら =ROUNDDOWN(SUMIF(B2:B51,10,A2:A51)*10/110,0)、8%なら =ROUNDDOWN(SUMIF(B2:B51,8,A2:A51)*8/108,0) です。税率ごとの税抜は、税込の合計からこの消費税額を引いて出します。
四捨五入にしたいときはどう変えますか
ROUNDDOWNをROUNDに変えます。切り上げならROUNDUPです。式のほかの部分は変えません。
出典
- 国税庁 インボイスQ&A 問57(適格請求書に記載する消費税額等の端数処理)
- 国税庁 インボイスQ&A 問59(税抜価額と税込価額が混在する場合)
- Microsoft ROUND 関数、ROUNDDOWN 関数、ROUNDUP 関数、SUMIF 関数
- Google スプレッドシートの関数リスト