計算と条件 8 / 8
計算式の実例集
金額・消費税、作業時間、休暇の日数、決裁者の判定、有効期限など、業務アプリでよく使う計算式と表示条件を、そのまま書き写せる形でまとめた実例集です。自分のフォームの key に読み替えて使えます。
約5分で読めます
Formia マニュアルの目次(章と記事の一覧)
アプリをつくる
入力項目ガイド
この記事は、業務アプリでよく使う式を、場面別にまとめた実例集です。項目のkey(qtyやamountなど)は、自分のフォームのkeyに読み替えて使ってください。式は、設計画面の「計算式」か「表示条件・必須条件」の欄に、=から書きます。
金額・数量
| 場面 | 式 |
|---|---|
| 明細の金額(行の中) | =qty * price |
| 小計 | =SUM(items[].amount) |
| 消費税(10%・切り捨て) | =FLOOR(SUM(items[].amount) * 0.1, 0) |
| 合計金額 | =SUM(items[].amount) + FLOOR(SUM(items[].amount) * 0.1, 0) |
| 精算の合計(経費精算) | =SUM(lines[].amount) |
| 加重見込み額(商談) | =ROUND(amount * probability / 100, 0) |
消費税や端数の考えかたは税の計算、明細の集計は明細の合計を出すを見てください。
時間・件数
| 場面 | 式 |
|---|---|
| 合計作業時間(日報) | =SUM(tasks[].hours) |
| 訪問の件数(日報) | =COUNT(FILTER(tasks[].kind, @item == '訪問')) |
| 点検の「否」の数 | =COUNTIF(rows, @item.result == 'ng') |
| 条件に合う行の金額だけ合計 | =SUMIF(rows, @item.result == 'ok', @item.amount) |
| 作業内容を読点でつなぐ | =JOIN(MAP(tasks, @item.content), '、') |
日付
| 場面 | 式 |
|---|---|
| 見積の有効期限(30日後) | =ADD_DAYS(estimate_date, 30) |
| 次回の点検日(半年後) | =ADD_MONTHS(inspected_on, 6) |
| 休暇の日数 | =IF(kind == '半日有給(午前)' || kind == '半日有給(午後)', 0.5, DIFF_DAYS(end_date, start_date) + 1) |
| 今月の末日 | =END_OF_MONTH(TODAY()) |
| 満年齢 | =AGE(birthday) |
| 和暦で表示 | =ERA_FORMAT(birthday) |
日付の考えかたは日数・期間の計算にあります。
判定・切り替え
| 場面 | 式 |
|---|---|
| 金額から決裁者を決める | =IF(amount >= 5000000, '社長', IF(amount >= 1000000, '部長', '課長')) |
| 区分に応じた係数 | =SWITCH(kind, '全日', 1, '半日', 0.5, 0) |
| 未入力なら代わりの値 | =COALESCE(nickname, name) |
| 期限切れか | =due_date < TODAY() |
文字
| 場面 | 式 |
|---|---|
| 氏名を1つの文字にする | =customer_name.last & ' ' & customer_name.first |
| 件名に番号を付ける | =CONCAT('見積-', PAD_LEFT(TEXT(seq_no), 4, '0')) |
| 文字数 | =LEN(memo) |
表示条件・必須条件
次の式は、「表示条件」や「必須条件」の欄に書きます。条件ビルダーで組める条件は、ビルダーで組むほうが手早く確実です。
| 場面 | 式 |
|---|---|
| 種類が「その他」のときだけ詳細を出す | =kind == 'other' |
| 100万円以上のときだけ比較検討を必須に | =amount >= 1000000 |
| 連絡先メールに入力があるときだけ表示 | =ISNOTBLANK(email) |
| 点検の「否」が1つでもあれば不具合欄を出す | =ANY(rows, @item.result == 'ng') |