計算と条件 2 / 8
よく使う関数
条件分岐のIF、合計のSUM、数えるCOUNT、明細を絞るFILTER、どれかが当てはまるか調べるANYなど、Formiaの式でよく使う関数を例つきで紹介します。
約5分で読めます
Formia マニュアルの目次(章と記事の一覧)
アプリをつくる
入力項目ガイド
Formiaの式には、Excelのように使える関数が約90個あります。この記事では、現場でよく使うものを選んで、書きかたと使いどころを紹介します。関数名は大文字で書きます。
条件で値を切り替える
| 関数 | はたらき | 例 |
|---|---|---|
IF(条件, 真, 偽) | 条件で値を切り替える | =IF(amount >= 1000000, '部長', '課長') |
AND(…) OR(…) NOT(x) | 条件を組み合わせる | =AND(qty > 0, price > 0) |
SWITCH(値, 候補1, 結果1, …, 既定値) | 値に応じて結果を選ぶ | =SWITCH(kind, '半日', 0.5, '全日', 1, 0) |
COALESCE(a, b, …) | 最初の入力済みの値を使う | =COALESCE(nickname, name) |
ISBLANK(x) ISNOTBLANK(x) | 未入力かどうか | =ISNOTBLANK(note) |
数える・合計する・丸める
| 関数 | はたらき | 例 |
|---|---|---|
SUM(リスト) | 合計(空のときは0) | =SUM(items[].amount) |
AVG(リスト) | 平均(空のときは未入力) | =AVG(scores[].point) |
COUNT(リスト) | 入力のある要素の数 | =COUNT(items) |
MIN MAX | 最小・最大 | =MAX(a, b) |
ROUND(x, 桁) | 四捨五入 | =ROUND(amount * 0.1, 0) |
FLOOR(x, 桁) CEIL(x, 桁) | 切り捨て・切り上げ | =FLOOR(amount * 0.1, 0) |
丸めの使い分けは税の計算で説明します。
文字を扱う
| 関数 | はたらき |
|---|---|
CONCAT(…)または& | 文字をつなげる |
LEFT RIGHT MID | 文字の一部を取り出す |
TRIM | 前後の空白(全角も)を取る |
REPLACE(文字, 検索, 置換) | 置き換える |
CONTAINS(文字, 一部) | 含むかどうか |
PAD_LEFT(文字, 長さ, 文字) | 左を0などで埋める |
日付を扱う
TODAY()(今日)、ADD_DAYS、ADD_MONTHS、DIFF_DAYS、END_OF_MONTH、AGEなどがあります。詳しくは日数・期間の計算を見てください。
明細(リスト)を絞る・調べる
明細のように複数の行があるときは、次の関数を使います。条件や式の中では、@itemが「いま見ている1行」を表します。
| 関数 | はたらき | 例 |
|---|---|---|
FILTER(リスト, 条件) | 条件に合う行だけ残す | =COUNT(FILTER(tasks[].kind, @item == '訪問')) |
ANY(リスト, 条件) | どれか1行でも条件に合うか | =ANY(rows, @item.result == 'ng') |
ALL(リスト, 条件) | すべての行が条件に合うか | =ALL(rows, @item.result == 'ok') |
COUNTIF(リスト, 条件) | 条件に合う行の数 | =COUNTIF(rows, @item.amount > 1000) |
SUMIF(リスト, 条件, 式) | 条件に合う行だけ合計 | =SUMIF(rows, @item.result == 'ok', @item.amount) |
MAP(リスト, 式) | 各行を式で変換する | =JOIN(MAP(rows, @item.item), '、') |
評価できない関数
IS_UNIQUE(同じ値の回答がほかにないか)とIS_BUSINESS_DAY(営業日か)は、サーバーだけで評価します。入力中の画面では判定できないため、表示条件には使えません。計算式や入力チェックには使えます。