【PowerApps】関数で使える複数条件についてまとめ
スポンサーリンク

今回はpowerappsの関数で複数条件がある場合にどうすれば良いのかをみていきます。

PowerAppsに必須の知識PowerFX対応の学習本はこちら
PowerApps学習の本命・実際のアプリももらえる学習本
PowerApps学習方法一覧

条件に関する基本事項

まずは、複数条件とかを考える前に関数が要求する条件についてみていきましょう。

条件とは比較のことである

関数内で条件式を要求されている場合は、TrueもしくはFalseによるBooleanのデータ型を要求しているということになります。
そして、このBooleanによるデータを導く場合には計算式で比較をすることで求めることができます。PowerAppsで比較を行う際には基本的に比較演算子(=,>,<,>=,<=)で比較を行うことができます。これらの記号で比較を行い、正しければTrueが間違っていればFalseが返却されます。

記号比較内容
=同値
>大きい(同じ値の場合にFalseになる)
※数字のみ
<小さい(同じ値の場合にFalseになる)
※数字のみ
>=以上(同じ値の場合にTrueになる)
※数字のみ
<=以下(同じ値の場合にTrueになる)
※数字のみ

結果をひっくり返す

与えられた結果をひっくり返したい場合もあるかと思います。その場合は演算子の!を使います。

条件式の頭に!をくっつけてあげることで論理の反対を返してくれます。

!(条件)

比較項目が一つではなんの効力もなさそうな演算子ですが、比較項目が増えて複雑な条件になってきた場合には必要になる演算子ですのでしっかりと覚えておきましょう。

比較とデータ型

記号によりデータを比較する訳ですが比較はどんなデータ型でも行えますが注意が必要です。

数字

比較で一番わかりやすいのは数字による比較となります。

右辺と左辺で同じ値なのか、どちらが大きいのかを比較演算子で比較することができます。

日付型なども比較することができます。

文字列

文字列も比較することができますが、同じ値か否かの比較となります。そのため<,>の不等式で比較を行うとエラーになります。

また、文字列の比較では英数字の半角や全角、小文字や大文字が違うだけで同じ値として認識してくれませんので比較する際は関数などで入力内容をしっかりと処理してあげる必要があります。
そのため、英字については入力内容を全て大文字にするUpper関数や小文字にするLower関数を使う必要があります。
全角を小文字にしてくれる関数(ExcelのASC関数)はいまだに実装されていないようなので諦めるしかないようです・・・。

下の画像はUpper関数、Lower関数を使っていない純粋な比較になります。

複数条件による比較方法の基本:条件が二つの場合

では本題の複数条件の比較を見てみましょう。

2種類の条件の比較方法

複数条件で比較と言っても複数条件による比較は2種類あります。

論理積と呼ばれるANDと論理和と呼ばれるORの二つです。

AND:論理積

論理積であるANDは二つの条件が両方ともTrueの場合にのみTrueを返してくれる複数条件の比較となります。逆に一つでもFalseがあると結果はFalseになります。

ANDで複数条件を行う場合には基本的にはAnd関数もしくは比較演算子&&を使います。

And(条件1,条件2)
条件1&&条件2
AND条件まとめ
  • 比較方法
    • And(条件1,条件2)
    • 条件1&&条件2
  • 比較結果一覧
    • True,True→True
    • True,False→False
    • False,True→False
    • False,False→False

OR:論理和

論理和であるORは条件が一つでもTrueの場合にTrueを返してくれる複数条件の比較となります。裏を返して言えば両方ともFalseの場合のみFalseを返す複数条件の比較となります。

ORで複数条件を行う場合には基本的にはOr関数もしくは比較演算子||を使います。||はShiftを推しながら¥を押すことで入力できます。

Or(条件1,条件2)
条件1||条件2
AND条件まとめ
  • 比較方法
    • Or(条件1,条件2)
    • 条件1||条件2
  • 比較結果一覧
    • True,True→True
    • True,False→True
    • False,True→True
    • False,False→False

And,Or 結果のまとめ

ということで、AndとOrをまとめると以下のようになります。

条件1条件2Andの結果
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse
条件1条件2Orの結果
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

複数条件による比較方法の応用:条件が三つ以上の場合

ここまで複数条件の比較を見てきましたが、複数条件が三つ以上の場合などはどうすれば良いのでしょうか。

全てTrueの場合True

全てTrueの場合のみTrueを返すようにするにはAnd関数もしくは&&を使うことができます。

And(条件1,条件2,条件3[,・・・])
条件1&&条件2&&条件3[&&・・・]
条件1条件2条件3結果
TrueTrueTrueTrue
TrueTrueFalseFalse
TrueFalseTrueFalse
TrueFalseFalseFalse
FalseTrueTrueFalse
FalseTrueFalseFalse
FalseFalseTrueFalse
FalseFalseFalseFalse

一つでもTrueの場合True

一つでもTrueの場合Trueを返すようにするにはOr関数もしくは||を使うことができます。

Or(条件1,条件2,条件3[,・・・])
条件1||条件2||条件3[&&・・・]
条件1条件2条件3結果
TrueTrueTrueTrue
TrueTrueFalseTrue
TrueFalseTrueTrue
TrueFalseFalseTrue
FalseTrueTrueTrue
FalseTrueFalseTrue
FalseFalseTrueTrue
FalseFalseFalseFalse

複数条件による比較方法の発展

さてここまででAndとOrで比較を見てきましたが、特定の条件の場合のみFalseにするなど複雑になった場合はどうすれば良いのでしょうか。

答えはAndやOrの中身でAndやOrを使うことになります。

条件が三つ以上で特定の条件の場合を指定

条件が三つあって条件1がTrueで他の二つのうち一つでもTrueならばTrueとする場合はどうでしょうか。

表で表すと次のようになります。

条件1条件2条件3結果
TrueTrueTrueTrue
TrueTrueFalseTrue
TrueFalseTrueTrue
TrueFalseFalseFalse
FalseTrueTrueFalse
FalseTrueFalseFalse
FalseFalseTrueFalse
FalseFalseFalseFalse

この場合は、要素を分割して条件1のグループAと条件2、条件3のグループBに分けます。すると条件2と条件3がOrで表し、グループAとグループBをANDで結んであげれば良いことに気づきます。

グループA
=条件1
グループB
=Or(条件2,条件3)
結果
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

この場合はグループA(=条件1)とグループB(=Or(条件2、条件3))の比較よりも、グループBの中身 である条件2と条件3同士の比較が優先されますので書き方は

And(条件1,Or(条件2,条件3)

となります。

条件が三つ以上で特定の条件の場合を指定

最後に条件が反対の場合を見てみます。先の例だと「条件が三つあって条件1がTrueで他の二つのうち一つでもTrueならばTrueとする場合」の反対を取得することで該当しないデータを取得する場合などが考えられます。

こういった場合は結果を逆にしてくれる演算子である!を使うことが求められますので結果は

!And(条件1,Or(条件2,条件3)

となります。

条件1条件2条件3結果結果を逆転
TrueTrueTrueTrueFalse
TrueTrueFalseTrueFalse
TrueFalseTrueTrueFalse
TrueFalseFalseFalseTrue
FalseTrueTrueFalseTrue
FalseTrueFalseFalseTrue
FalseFalseTrueFalseTrue
FalseFalseFalseFalseTrue

複数条件を実装している関数もある

ここまで条件が複数の場合の処理を見てきましたが、関数によってはすでに複数条件を実装している関数もあります。

例えばFilter関数はFilter(テーブル名,条件1,条件2)とすることで条件1と条件2がAndで結ばれます。しかしながら、関数で複数条件を入力す場合、AndかOrのどちらが使われるのか明示されているわけではないので、条件をしている際は関数で条件を複数指定するよりもAndやOrを使って条件を一つにしてあげたほうが保守性も上がりミスも減るので極力AndやOrを使っていきましょう。

❌複数条件を関数内で処理する
▶︎条件がAndなのかOrなのか分かりづらい
Ex)Filter(テーブル名,条件1,条件2)

⭕️複数条件をAndやOrで処理する
▶︎条件がAndなのかOrなのか分かりやすいので保守が楽
Ex)Filter(テーブル名,And(条件1,条件2))

スポンサーリンク
社会人ということを言い訳にしていませんか

社会人だから学ぶ時間がない

そんなことを言い訳に勉強をすることを諦めていませんか。
そんな状態ではいけないということはあなた自身が一番知っているはずです。

社会人だからこそ学ぶ必要がある。そんな社会人に送る学習ツールがこちらです
↓↓↓

おすすめの記事