メインコンテンツへスキップ

02 · 条件付きセル

シナリオ

行データに応じてセル値を変えて表示します。パターンは 2 つあります ― 2 つの値から 1 つを選ぶ IF と、ソースが空のときに置き換える IFEMPTY です。

IF ― 2 つの値から 1 つを選ぶ

{{ IF([更新金額] > 10000, "優先", "標準") }}
{{ IF([地域] = "東京", "首都圏", "地方") }}
{{ IF([担当者] != "", [担当者], "未割当") }}

比較演算子: =!=><>=<=。第 3 引数(「else」分岐)は必須です ― XTL には暗黙の空分岐はありません。

IFEMPTY ― 空値を代替

{{ IFEMPTY([担当者], "未割当") }}
{{ IFEMPTY([メモ], "—") }}

IFEMPTY(value, fallback)value が空のとき(欠落、null、空白のみの文字列)に fallback を返します。数値 0 と false は空値ではありません ― それが必要なら IF を使ってください。

真偽判定ルール(IF 条件)

  • 値(欠落、空白のみの文字列)は falsy です。
  • 文字列 "0""false"truthy です ― 空でない文字列という事実以外に意味はありません。"0" を falsy として扱いたいなら明示的に比較してください: IF([金額] != "0", ...)
  • 数値 0 と Boolean false は falsy です。
  • 日付は常に truthy です。

& でテキストを組み合わせる

{{ "ランク-" & IF([更新金額] > 10000, "A", "B") & "-" & [地域] }}

& は文字列連結演算子です。オペランドは標準文字列形式に変換されます(spec/language.md の「Canonical String Form」参照)。

メモ

  • =!= は XTL の比較フォールスルーに従います ― 数値または数値文字列なら数値比較、Boolean 同士なら Boolean 比較、日付同士ならタイムスタンプ比較、それ以外はコードポイント順序での比較です。ロケール並べ替えは適用しません。
  • IF はネスト可能です: IF(a, "X", IF(b, "Y", "Z"))。Excel ユーザーにはなじみのある形ですが、深くネストすると読みにくくなります ― 補助セルに分けたり、ソース段階で事前計算する方が良いです。