今回は、条件に応じて処理を分岐できる関数IFの使い方を紹介していこう。Excelの関数IFを知っている方なら、すぐに使い方を覚えられるはずだ。あわせて、チェックボックスを条件にする際に使用する関数CONTAINS、複数の条件を指定する際に使用する関数AND、ORについても紹介しておこう。→連載「kintoneでゼロから始めるノーコード開発」のこれまでの回はこちらを参照

条件分岐とは?

kintoneアプリにデータを入力する際に、「条件に応じてデータを自動入力してほしい」と思うこともあるだろう。このような場合に活用できるのが関数IFだ。

  • 関数IFを使った条件分岐処理

わかりやすい例を使って紹介していこう。例えば、購入する商品の「小計が5万円以上なら送料無料(0円)」、「そうでない場合は送料を1,500円にする」というルールで自社の商品を販売していたとしよう。

  • 「送料」が無料になる場合(小計が5万円以上)

  • 「送料」が1,500円になる場合(小計が5万円未満)

この場合、「0」や「1,500」といった数値を自分の手で入力する必要はない。あらかじめ関数IFを指定しておくことで、「送料」の値を自動入力することが可能だ。ということで、今回は具体的な手順を示しながら関数IFの使い方を紹介していこう。また、関連する関数として、CONTAINSやAND、OR、NOTの使い方も紹介する。

関数IFの基本的な使い方

まずは、関数IFの基本的な使い方から説明する。関数IFを使用するときも、条件とするフィールドに「フィールドコード」を指定しておくのが基本だ。フィールドコードについては第7回で詳しく解説しているので、よく分からない方は事前に一読しておくとよい。

ここでは、先ほど示した例(小計が5万円以上なら送料無料)を使って関数IFを使ってみる。この場合は「小計」の値が条件となるので、「小計」の項目にフィールドコードを指定しておく必要がある。今回は、フィールド名と同じ「小計」という名前のフィールドコードを指定した。

  • 条件の対象となるフィールド

続いて、「送料」が自動入力されるフィールドを配置する。このフィールドは「計算」のパーツをドラッグ&ドロップして配置すればよい。

  • 「計算」フィールドの配置

「計算」フィールドを配置できたら、「歯車」のアイコンから「設定」を選択し、設定画面を呼び出す。

  • 設定画面の呼び出し

以下の図のような設定画面が表示されるので、「フィールド名」に適当な文字(ラベル)を指定する。続いて、「計算式」の項目に関数IFを入力する。関数IFの書式は、Excelの関数IFを入力する場合と基本的に同じだ。カッコ内に「条件式」、「真の場合」、「偽の場合」をカンマで区切って記述していけばよい。

◆関数IFの書式 IF(条件式, 真の場合に返す値, 偽の場合に返す値)

  • 「フィールド名」と「関数IF」の入力

今回の例の場合、「小計が5万円以上か?」が条件になるので、条件式は「小計>=50000」となる。この条件を満たすときは送料無料にするので、真の場合には「0」と入力する。一方、条件を満たさないとき(小計が5万円未満の場合)は送料を1,500円にするので、偽の場合には「1500」と入力する。

Excelの関数IFと記述が異なる部分は以下の2点のみ。

・最初の「=」(イコール)は不要
・セル参照をフィールドコードで指定する

この2点にさえ注意しておけば、すぐにでも関数IFを使えるだろう。念のため、使用可能な比較演算子も紹介しておこう。

・= ……………… 左右の値が等しい
・!= ……………… 左右の値が等しくない
・<> ……………… 左右の値が等しくない
・< ……………… 「左の値」が「右の値」より小さい
・<= ……………… 「左の値」が「右の値」以下
・> ……………… 「左の値」が「右の値」より大きい
・>= ……………… 「左の値」が「右の値」以上

関数IFを入力できたら、その結果の表示方法(数値の表示方法、小数点以下の表示桁数、単位記号)を指定する。なお、今回の例では「小計」と「送料」を足し算した「税抜合計」も計算したいので、この時点で「フィールコード」も指定しておくとよい。ここでは「送料」という名前のフィールドコードを指定した。これで「送料」のフィールドの設定は完了。「保存」ボタンをクリックする。

  • 「表示方法」と「フィールドコード」の指定

次は、「小計」と「送料」の合計金額を計算するフィールドを作成していこう。フォーム画面に「計算」フィールドを追加し、「小計+送料」を自動計算するように設定を行う。

  • 「税抜合計」のフィールドを作成

あとは「アプリを公開」ボタン(または「アプリを更新」ボタン)をクリックして、アプリの編集を終了するだけ。これで「条件に応じて値が自動的に変化するフィールド」を作成できる。

念のため、先ほど編集したアプリの動作を確認しておこう。データの入力画面を開き、テスト用のデータを適当に入力していく。以下の図の場合、「小計」は5万円未満なので「送料」は\1,500になっている。

  • 「小計」が5万円未満の場合

さらに「注文内容」に商品を追加していくと「小計」が5万円以上になり、「送料」も\0(無料)に変化する。もちろん、それに合わせて「税抜合計」の金額も再計算される。

  • 「小計」が5万円以上の場合

「小計が5万円以上か?」の条件に応じて、「送料」の値が自動的に変化していることを確認できるだろう。このように、kintoneは関数IFを使った条件分岐にも対応している。Excelに慣れている方なら、特に戸惑うことなく関数IFを使いこなせるはずだ。便利な機能なので積極的に活用していくことをおススメしたい。

条件に応じて計算式を変更する

先ほどの例では、条件に応じて「0」または「1500」の値を出力するように関数IFを指定した。このように“特定の値”を出力するのではなく、条件に応じて“計算式”を変化させることも可能だ。

今度は、「特別割引」が“あり”の場合は代金を10%OFFにする、という処理を関数IFで実現してみよう。なお、条件となる「特別割引」のフィールドは「ラジオボタン」で作成されている。このような場合も、問題なく関数IFを使用することが可能だ。

  • 条件の対象になるフィールド

アプリの編集手順を具体的に紹介していこう。まずは、「割引金額」を計算するために「計算」フィールドを配置する。続いて、この「計算」フィールドに関数IFを指定する。

  • 「計算」フィールドの配置(割引金額のフィールド)

今回の例では、「特別割引に“あり”が選択されているか?」が条件になる。ちなみに、このラジオボタンには「特別割引」というフィールドコードが指定されている。よって、関数IFの条件式は「特別割引="あり"」という記述になる。

この条件を満たすときの「割引金額」は「小計」の10%になるので、真の場合には「-小計*0.1」という計算式を指定する。なお、ここでは「割引金額」をマイナスの数値として扱うため、数式の先頭に「マイナス記号」を付けている。一方、条件を満たさないときは「割引金額」を0円にすればよいので、偽の場合には「0」と入力する。

  • 「計算」フィールドの設定(割引金額のフィールド)

さらに、結果の表示方法などを指定し、「税抜合計」を計算できるように「フィールドコード」を指定しておく。今回の例では、このフィールドに「割引」というフィールドコードを指定した。

最後に、「税抜合計」の金額を表示する「計算」フィールドを追加する。今回は「割引金額」をマイナスの数値として扱っているので、この計算式は「小計+割引」という足し算になる。間違えないように注意しよう。

  • 「税抜合計」のフィールドを作成

以上で、一連の編集作業は完了だ。データの入力画面を開いて動作を確認していこう。「特別割引」に“あり”を選択している場合は、「小計」の10%(マイナス値)が「割引金額」として表示される。もちろん、「税抜合計」には「割引金額」を差し引いた数値が表示されている。

  • 「特別割引」が「あり」の場合

「特別割引」を“なし”に変更すると、「割引金額」は\0になる。この場合、「税抜金額」は「小計」と同じ数値になる。

  • 「特別割引」が「なし」の場合

このように、「ラジオボタン」で条件分岐を行ったり、「真の場合」や「偽の場合」に計算式を指定したりすることも可能となっている。

チェックボックスを条件にするときは?

次は、「チェックボックス」を条件に関数IFを使用する方法を解説していこう。今度は、“特別割引”のチェックボックスがONの場合は代金を10%OFFにする、という処理を関数IFで実現してみる。

  • 条件の対象になるフィールド

この場合、関数IFの条件式に「特典="特別割引"」と記述すればよい、と思うかもしれない。しかし、実際にはうまくいかない。「配列型の値に対して適切な関数が利用されていません。……」という警告が表示されてしまう。

  • 関数の記述が正しくないことを示す警告

というのも、チェックボックスの場合は“値が1つになるとは限らない”と考えられるからだ。先ほど示したフォーム画面には、“特別割引”と“送料無料”の2つのチェックボックスが用意されている。これらは両方ともONにすることが可能である。この場合、「特典」の値は“特別割引”と“送料無料”の両方になり、「特典="特別割引"」とはならない。

このため、チェックボックスを条件にするときは、関数CONTAINSを使用する決まりになっている。関数CONTAINSは、「指定した文字列が含まれるか?」を判定してくれる関数で、以下のような書式で使用する。

◆関数CONTAINSの書式
CONTAINS(フィールドコード, "検索文字列")

今回の例の場合、「特典に"特別割引"が含まれているか?」を判定すればよいので、条件の記述は「CONTAINS(特典,"特別割引")」となる。さらに、真の場合、偽の場合の処理を追加すると、関数IFの記述は「IF(CONTAINS(特典,"特別割引"),-小計*0.1,0)」となる。

  • CONTAINを使った関数の記述

これで関数IFを正しく指定することができた。データの入力画面を開いて動作を確認してみよう。まずは、“特別割引”のチェックボックスがONの場合だ。この場合、「小計」の10%(マイナス値)が「割引金額」として表示される。

  • 「特別割引」がONの場合

“特別割引”のチェックボックスをOFFにすると、「割引金額」の値は\0になる。もちろん、それに応じて「税抜合計」の金額も再計算される。

  • 「特別割引」がOFFの場合

このように、関数IFの条件にチェックボックスを指定するときは、関数CONTAINSを使って条件式を記述しなければならない。間違えないように注意しておこう。

ANDやORを使った複数条件の指定

最後に紹介するのは、複数の条件を指定して関数IFを使用する例だ。この場合、「それぞれの条件をどのように結ぶか?」に応じて、ANDまたはORといった関数を使用する。

◆関数ANDの書式
AND(条件式1, 条件式2, ……)

◆関数ORの書式
OR(条件式1, 条件式2, ……)

それぞれの条件を「かつ」で結ぶときは関数AND、「または」で結ぶときは関数ORを使用すればよい。

例えば、「特別割引がON」かつ「小計が5万円以上」の場合は10%OFFにする、という処理を行うときは、関数IFの条件式を以下の図のように記述する。

  • ANDを使った複数条件の指定

カッコが3重になっているため少し複雑に見えるが、順を追って確認していけば記述内容を理解できるはずだ。関数ANDのカッコ内には、「CONTAINS(特典,"特別割引")」と「小計>=50000」という2つの条件が記述されている。それぞれの条件は「特別割引がON」と「小計が5万円以上」を示しており、これらが「かつ」で結ばれる、ということになる。以降の記述は「真の場合」と「偽の場合」の処理となる。

こちらもデータの入力画面で動作を確認しておこう。「小計」が5万円以上で“特別割引”がOFFの場合、条件を一方しか満たしていないので“割引なし”になる。よって、「割引金額」は\0になる。

  • 「小計」が5万円以上、“特別割引”がOFFの場合

“特別割引”のチェックボックスをONにすると、両方の条件を満たすようになり、10%OFFが有効になる。よって、「小計」の10%(マイナス値)が「割引金額」として表示される。もちろん、「税抜合計」は「割引金額」を差し引いた数値になる。

  • 「小計」が5万円以上、“特別割引”がONの場合

今度は、「注文内容」から商品を1つ削除して「小計」を5万円未満にしてみよう。この場合、「特別割引がON」の条件しか満たさなくなるので、“割引なし”の状態に戻る。

  • 「小計」が5万円未満、“特別割引”がONの場合

このように、複数の条件をAND(かつ)やOR(または)で結んで指定することも可能だ。そのほか、条件式の判定結果を逆にする関数NOTも用意されている。

◆関数NOTの書式
NOT(条件式)

この関数を使って条件式を記述すると、条件を満たすときは「偽」、そうでないときは「真」が返される。頻繁に使用する関数ではないが、このような関数があることも覚えておくとよい。

なお、kintoneで使用できる関数は、このページに詳しく記載されている。気になる方は、あわせて参照しておくとよいだろう。