計算と条件 7 / 8
式のエラーと見直し
式を保存できない、計算結果が空になるといったときの原因と直しかたを説明します。よくあるエラーの一覧、未入力の伝わりかた、循環参照、式の長さの上限、見直しの手順を紹介します。
約4分で読めます
Formia マニュアルの目次(章と記事の一覧)
アプリをつくる
入力項目ガイド
式が思ったとおりに動かないときは、原因が大きく2つに分かれます。保存のときにエラーになる場合と、保存はできるが結果が空や意外な値になる場合です。この記事では、それぞれの見つけかたと直しかたを説明します。
保存のときに出るエラー
式は、設計画面で保存するときに読み取りと型の検査を受けます。書き方に問題があると保存できず、何が問題かが日本語で表示されます。位置が分かるものは、何文字目かも添えられます。
| エラーの内容 | よくある原因 | 直しかた |
|---|---|---|
| 項目「○○」は存在しません | keyの書き間違い。項目名(ラベル)を書いている | 「構成」でkeyを確かめて書き直す |
| 関数「○○」は存在しません | 関数名の書き間違い | よく使う関数で名前を確かめる |
| 解釈できない文字があります | 全角の括弧・記号・空白が混ざっている | 式の記号は半角で書く |
| 文字列が閉じられていません | 引用符(‘)が足りない | 引用符を対にする |
| 「○○」が必要ですが、式の終わりがありました | 閉じ括弧が足りない | 括弧の数を合わせる |
| 型が合わない | 数と文字を比べている(1 == '1')、文字に+を使っている | 型をそろえる。文字は&でつなぐ |
| 計算式が循環しています | Aの計算がBを使い、Bの計算がAを使っている | 片方を、元になる項目から計算するように直す |
| 式が複雑すぎます | 式が長すぎる | 計算用の項目に分ける |
| @itemはFILTER / ANYなどの中でのみ使えます | 関数の外で@itemを使った | 関数の条件の中に移す |
| 入れ子になっている(保存できない) | FILTERの中にANYを入れた | 1段までにして、途中の結果を別の項目に分ける |
保存はできるが、結果が空・意外になるとき
未入力が計算に混ざっている
未入力は0ではありません。足し算の片方が未入力だと、答えも未入力になります。
=a + b ← b が未入力だと、答えも未入力
=a + COALESCE(b, 0) ← 未入力を 0 として扱う
合計のSUMは、空のときに0を返します。平均のAVGと最大・最小のMAX・MINは、空のときは未入力です。
0で割っている
1 / 0は「計算できません」になり、結果は未入力です。割る数が0や未入力になりうるときは、IFで守ります。
=IF(ISNOTBLANK(count) && count != 0, total / count, null)
表示条件が効かない
項目を隠す条件が働かないときは、使える項目が「その項目より前にあるもの」かを確かめてください。表示条件には、サーバーだけで評価する関数(IS_UNIQUE・IS_BUSINESS_DAY)は使えません。
式の上限
式は、安全のために次の上限があります。通常の業務で届くことはほとんどありません。
- 式の大きさ: 500個の要素まで
- リストの長さ: 10,000件まで
- 計算の手数: 100,000回まで
上限を超えると、計算を中断してエラーになります。
見直しの手順
- エラーの文を読み、位置を確かめる
- 項目をkeyで書いているか、記号が半角かを確かめる
- 式を短く分け、途中の結果を計算用の項目に出して確かめる
- 左のペインの「ロジック」タブで、どの項目がどの項目に影響しているかを見る
- プレビューで、値を入れて動きを確かめる