■12972 / inTopicNo.1) |
Re[1]: レポートで複数の条件を指定したいです
|
□投稿者/ ONnoji -(2021/06/18(Fri) 11:26:26)
| 2021/06/18(Fri) 15:51:50 編集(投稿者)
> 条件選択の2つを続けて指定したいですが、どのようにすれば良いでしょうか
ここ数日間、なぜこのような質問が発せられるのかを考えていました。
そこで思ったのですが、エクセル等の IF関数/IIF関数 と 桐の #条件選択/#cond 関数の違いで混乱されているのかもしれませんね。
IF関数/IIF関数 では、
引数には <1.条件式> <2.条件式を満たす時の値> <3.条件式を満たさない時の値> の3つ必要です。
しかし、
桐の #条件選択/#cond 関数では、※ #cond は #条件選択 の別名です
引数に <1.条件式> <2.条件式を満たす時の値> の2つでもOKです。
ただし、この場合には暗黙のうちに、 <条件式を満たさない時の値> として未定義値が返ることになっています。←これがキモです。
ですが、正確な引数は次のように
<1.条件式1> <2.条件式1を満たす時の値> <3.条件式2> <4.条件式2を満たす時の値> … <n.条件式n> <n+1.条件式nを満たす時の値> ※どの条件式も満たさない場合には未定義値が返ります←これがキモです。
と[条件式と条件式を満たす時の値のペア(組)]を左側から列挙するのが正確な書き方です。
ということで、次のように
#条件選択([対象]>=1, #右側文字列( #文字列( [対象] ), 2 ), [対象]<=1, #右側文字列( #文字列( [非対象] ), 2 ) ) ↑ ↑ ↑ ↑ <1.条件式1> <2.条件式1を満たす時の値> <3.条件式2> <4.条件式2を満たす時の値>
と書けばOKです。
なお、<1.条件式1> を満たさない場合に常に <3.条件式2を満たす時の値> を反す場合には、 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 恒真式(つねに正しい条件式の意味)として、桐ではイチ(1)を使うのが一般的です。
なぜ恒真式がイチ(1)なのかはここでは詳しく論じませんが、もしもご興味があれば
30 論理と条件式|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部 http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section30
をご覧ください。
ということで、すでに「まさやん」さんが回答された次の式
#条件選択([対象]>=1, #右側文字列( #文字列( [対象] ), 2 ), 1, #右側文字列( #文字列( [非対象] ), 2 ) ) ↑ ↑ ↑ ↑ <1.条件式1> <2.条件式1を満たす時の値> <3.恒真式> <4.恒真式を満たす時の値>
となるわけですよ。
|
|