計算と条件 4 / 8
明細の合計を出す
見積書や日報のように行を足していく明細(繰り返しテーブル)で、行ごとの金額・小計・合計・件数を式で自動計算する方法を、見積アプリの例で説明します。条件つきの合計も扱います。
約4分で読めます
Formia マニュアルの目次(章と記事の一覧)
アプリをつくる
入力項目ガイド
見積書、経費精算、日報など、行を足していく入力では、行ごとの計算と、全体の合計が必要です。Formiaでは、明細は「繰り返しテーブル」という項目で作り、行の計算と合計は式で自動化できます。この記事では、見積アプリを例に説明します。
2つの計算を分けて考える
明細まわりの計算は、場所が2つに分かれます。
| 計算 | 書く場所 | 例 |
|---|---|---|
| 行の中の計算 | 明細の中の列(子項目)の計算式 | 金額 = 数量 × 単価 |
| 行をまたぐ集計 | 明細の外の項目の計算式 | 小計 = 全行の金額の合計 |
行の中の計算
明細の中の「金額」列に、次の式を設定します。
=qty * price
行の中では、同じ行の項目をkeyだけで呼べます。1行ごとに計算され、行を足したり数量を変えたりすると、その場で更新されます。
行をまたぐ集計
明細の外にある「小計」「合計金額」の項目に、行の合計を計算する式を設定します。明細のkeyがitemsの場合、items[].amountが「全行の金額のリスト」になります。
=SUM(items[].amount)
見積アプリでは、消費税と合計金額もこの小計から計算しています(税の計算は税の計算で説明します)。

画面の左の「ロジック」タブに、行の金額(qty * price)、明細の小計(SUM(items[].amount))、消費税、合計金額が一覧になっています。
条件つきの合計と件数
行の一部だけを集計したいときは、SUMIF・COUNTIF・FILTERを使います。@itemが、いま見ている1行です。
=SUMIF(items, @item.rate == 8, @item.amount) ← 税率 8% の行だけの金額の合計
=COUNTIF(items, @item.amount >= 10000) ← 1 万円以上の行の数
=COUNT(FILTER(tasks[].kind, @item == '訪問')) ← 日報で「訪問」の作業の件数
合計行を表示する
明細の設定には、「合計行を表示」があります。表の下に合計の行を出したいときは、これを入れます。小計や合計を1つの項目として保存し、一覧や帳票でも使いたいときは、上のように計算式の項目を作ります。
行を足せる数
明細の設定で、「最小行数」「最大行数」「追加ボタンの文字」を決められます。スマホでは、明細の各行がカードの形に切り替わります。