数式の中で選択リスト型の項目を使用する方法

 「エラー: 項目○○は選択リスト項目です。選択リスト項目は、特定の関数でのみサポートされます。」というエラー文を見たことがありますでしょうか。

数式の中で選択リスト型の項目をそのまま使おうとするとこのようなエラーが出ます。このように数式の中で選択リスト型の項目は結構独特な扱いになります。

本記事では、数式の中で選択リスト型の項目を使用する際のポイントをユースケースを交えて紹介します。

「ISPICKVAL」関数:数式の中で選択リスト型の項目を使用する

例として商談の標準項目である「フェーズ」を取り上げます。フェーズ項目は選択リスト型で、API参照名はStageNameです。例えば、以下の数式を記載した場合、エラーになります。

数式
IF(
  StageName="Closed Won","受注",
    IF(StageName="Closed Lost","失注","商談中"
))

理由としては数式の仕様上、選択リスト型の項目を通常のテキスト型の項目のように「StageName=”Closed Won”」と記述することが出来ないからです。

数式の中で選択リスト型の項目を使用するためには「ISPICKVAL」関数を使用します。

先ほどの数式は、以下のように記載することでエラー無く使用することが出来るようになります。

数式
IF(
  ISPICKVAL(StageName,"Closed Won"),"受注",
    IF(ISPICKVAL(StageName,"Closed Lost"),"失注","商談中"
))

「ISPICKVAL」関数の使い方としては、以下のようになります。

仮に「ISPICKVAL(A,B)」とすると、Aには選択リスト型の項目が入ります。BにはAの値が入ります。ISPICKVAL関数を使用することで、A=Bを表現することが出来ます。

結果として返ってくるのはtrueかfalseになりますので、IF文などと組み合わせて使用する場合が多いです。

上記の数式ではフェーズがClosed Wonだったら受注、Closed Lostだったら失注、それ以外だったら商談中と表示するテキスト型の数式項目です。(この数式自体はサンプル用なので意味ないです…)

「CASE」関数:いくつもIF文を使わずシンプルに条件分岐を記載

先ほどの数式はIF文が2つなのでまだいいですが、これが10個くらいあったらかなり煩雑な数式になってしまいます。

そこで、さっくりスマートにまとめたい場合には「CASE」関数を使用します。先ほどの数式をCASE関数で記載すると以下のようになります。

数式
CASE(
  StageName, 
    "Closed Won" , "受注", 
    "Closed Lost" , "失注",
    "商談中"
)

CASE関数は以下のように使用します。

CASE(評価したい項目 , 評価したい項目の値がAだったら , Bを返す , 評価したい項目の値がCだったら , Dを返す…と分岐の数だけ繰り返していき、最後に、ここまで出てきた評価したい項目の値以外の値の場合はEを返す)

「TEXT」関数:数式の中で選択リスト型の項目の表示ラベルを取り出す

先ほど紹介したISPICKVAL関数では、true/falseの判定しか出来ませんでした。そうではなくて、選択リストの値の表示ラベル(選択肢のテキスト自体)をそのまま数式の中で使用したい場合があります。

その際には、「TEXT」関数を使用します。例えば、テキスト型の数式項目で、以下の数式を作成すると、現状のフェーズの選択肢のテキスト自体を返すという結果になります。現状がClosed Wonだったらその値がそのまま数式項目に表示される形です。

数式
TEXT(StageName)

「ISBLANK」関数:数式の中で選択リスト型の項目がブランクだったら

数式の中で選択リスト型の項目がブランクであることを表現したい場合には「ISBLANK」関数を使用します。

ただし、先ほど登場したTEXT関数と一緒に使用しないと下図のように、例のエラーが出てしまいます。

以下のようにTEXT関数と組み合わせて使用すれば問題ありません。

数式
IF(ISBLANK(TEXT(StageName)),"埋めてください","")

まとめ

本記事では数式の中で選択リスト型の項目を扱う際のお作法について詳しく解説しました。数式項目だけでなく入力規則やフローでも使える知識ですので、ぜひ活用していきたいですね。