計算と条件 5 / 8
税の計算
消費税の計算を式で設定する方法を説明します。税抜から税込、税込から税抜、端数の切り捨て・四捨五入・切り上げ、税率ごとの集計を、見積アプリの式を例に紹介します。端数処理の違いも整理します。
約4分で読めます
Formia マニュアルの目次(章と記事の一覧)
アプリをつくる
入力項目ガイド
見積書や請求書では、消費税の計算と端数の処理が欠かせません。Formiaの数値は10進で計算するので、0.1 + 0.2が0.3になるなど、金額で困る誤差が出ません。この記事では、税の計算を式で設定する方法を説明します。
端数を処理する関数
| 関数 | はたらき | 例(2.5と -2.1) |
|---|---|---|
ROUND(x, 桁) | 四捨五入 | 2.5は3 |
FLOOR(x, 桁) | 切り捨て(小さいほうへ) | 2.7は2、-2.1は -3 |
CEIL(x, 桁) | 切り上げ | 2.1は3 |
TRUNC(x, 桁) | 0に向かって切り捨て | -2.1は -2 |
ROUND_HALF_EVEN(x, 桁) | 偶数丸め(銀行丸め) | 2.5は2、3.5は4 |
桁は「小数点以下の桁数」です。省略すると0(整数)です。ROUNDは0.5を切り上げる、ふつうの四捨五入です。マイナスの金額(値引きなど)を扱うときは、FLOORとTRUNCの向きの違いに気をつけてください。
税抜から消費税と合計を出す
見積アプリでは、明細の小計から消費税(10%・切り捨て)と合計を、次のように計算しています。
小計 =SUM(items[].amount)
消費税 =FLOOR(SUM(items[].amount) * 0.1, 0)
合計金額 =SUM(items[].amount) + FLOOR(SUM(items[].amount) * 0.1, 0)

四捨五入にしたいときは、FLOORをROUNDに、切り上げならCEILに替えます。
税込から税抜と消費税を出す
税込の金額から逆算するときは、税率で割ります。
税抜金額 =FLOOR(total / 1.1, 0)
消費税額 =total - FLOOR(total / 1.1, 0)
税抜を先に端数処理し、消費税額を「税込 - 税抜」で出すと、両方を足したときに税込とぴったり合います。
税率ごとに集計する
標準税率(10%)と軽減税率(8%)が混ざる明細では、明細の各行に「税率」の列(8または10)を持たせ、税率ごとに合計してから税を計算します。
8% 対象の税抜合計 =SUMIF(items, @item.rate == 8, @item.amount)
8% の消費税 =FLOOR(SUMIF(items, @item.rate == 8, @item.amount) * 0.08, 0)
10% の消費税 =FLOOR(SUMIF(items, @item.rate == 10, @item.amount) * 0.1, 0)
行ごとに税を計算して足すのではなく、税率ごとに合計してから1回だけ端数を処理する形にしておくと、請求書の書き方と合わせやすくなります。
税率を1か所にまとめる
税率が将来変わっても直しやすいように、税率を入れる項目(例: tax_rate、値は0.1)を1つ作り、各式からそれを呼ぶ方法もあります。
=FLOOR(subtotal * tax_rate, 0)
この項目を「読み取り専用」にして、既定値に0.1を入れておくと、入力する人が間違えて変えることを防げます。