CountIfで絶対覚えておきたい2つの使い方(複数条件、文字列)|PowerApps
PowerAppsで要素を数える際には、
「CountIf」関数を使用します。
しかし、CountIf関数では「複数条件での使用」や「文字列を交えた条件」「ギャラリーとの関連」などもあります。
この記事では、CountIf関数の基本的な使い方から、上記の発展的な使い方について具体例も交えながら解説していきます。
具体例も実際にデータの移り変わりをイメージできるように書いていますので、ぜひ最後まで一緒に見ていきましょう!
目次(クリックで読みたい部分にジャンプできます)
CountIfの基本的な使い方
CountIf関数は、
特定の条件を満たすレコードの数をカウントするために使用されます。
構文は次の通りです。
CountIf(テーブル名, 条件)
テーブル名
→その名の通り、テーブルの名前を指定します。
条件
→カウントしたい要素を絞り込むための条件を指定します。複数条件でも指定可能です。
ここからCountIfを実際に使うときに出る疑問点について紹介していきます。
CountIfを複数条件で使用する
CountIfで条件を指定するときに、
複数条件でしか特定の要素を抽出できない場合もあるでしょう。
複数の条件で指定する場合は、
- &&(And)
- ||(Or)
を使用します。
「&&」は全ての条件が満たされる場合に 真となり
「||」は任意の条件が満たされる場合に真となります。
今回は、例として以下のようなデータがあると想定します。
AND条件
まずは、AND条件で複数条件を指定する場合です。
上のデータにおいて、
「Status」が「Completed」であり、かつ「Description」に「task」という文字列が含まれるレコードの数をカウントする場合です。
CountIf(データソース, Status = "Completed" && Find("task", Description) > 0)
2つの条件を「&&」で結ぶことで、
「Status」が「Completed」であり、「Description」に「task」という文字列が含まれているレコード
この2つの条件を抽出することができます。
抽出されるレコード
この条件に一致するレコードは、IDが1,5の2つになります。
OR条件
では、今度は「OR」条件を使用して、
「Status」が「Completed」であり、または「Description」に「task」という文字列が含まれるレコードの数をカウントします。
OR条件の場合は「||」を使用しますので、以下のように書きます。
CountIf(データソース, Status = "Completed" || Find("task", Description) > 0)
先ほどの条件を「または」で結ぶ場合でも、「||」で結べば良いことになります。
抽出されるレコード
この条件に一致するレコードはIDが1, 3, 4, 5, 6の5つです。
複数条件の組み合わせ
複数条件の組み合わせ
複数条件(AND、OR条件)を組み合わせることで、さらに複雑なフィルタリングを行うこともできます。
複数条件を組み合わせる場合には、「括弧」を用いて書きます。
例えば、以下のような条件に当てはまるデータを抽出したいとしましょう。
「Status」が「Completed」で、「Description」に「task」という文字列が含まれるか、
「Status」が「Failed」であるレコードの数をカウントする
この場合は初めの「AND」条件を括弧で囲み先に処理をさせます。
CountIf(データソース, (Status = "Completed" && Find("task", Description) > 0) || Status = "Failed")
この条件は括弧を使用して、まず「StatusがCompletedでDescriptionにtaskを含む」という条件と、
「StatusがFailedである」という条件を別々に評価し、最終的にそのいずれかを満たすレコードをカウントします。
抽出されるレコード
この条件に一致するレコードはIDが1, 4, 5の3つです。
CountIfで文字列に関する条件の仕方
今度は、CountIfを用いて文字列に関する条件を指定してみましょう。
文字列を使った条件の指定では、以下のような条件があります。
- 完全一致
- 部分一致
- 大文字小文字の区別しない
この3つの条件の指定の仕方について見ていきましょう。
使用するデータテーブル
今回の例では以下のようなデータテーブルがあることを想定しましょう。
完全一致の条件指定
「完全一致」で条件を指定したい場合には、特に関数は使わずそのまま指定することができます。
CountIf(データソース, Status = "Completed")
この場合には、「Status」が「Completed」と全く同じときに抽出されます。
抽出されるレコード
条件に一致するレコードはIDが1, 3, 5の3つです。
部分一致の条件指定
では、部分一致の場合を考えてみましょう。
Descriptionというフィールドに「task」という文字列が含まれるレコードをカウントしてみましょう。
部分一致の場合には、「Find」関数を用います。
CountIf(データソース, Find("task", Description) > 0)
こうすることで、「Description」の中に「task」の文字列があるレコードを抽出できます。
抽出されるレコード
この条件に一致するレコードはIDが1, 4, 5, 6の4つです。
Findを使用すると、大文字と小文字を区別して検索します。
上記の例では、taskという文字が含まれているのは抽出されません。
大文字小文字の区別しない
では、大文字と小文字を区別しないで検索したい場合にはどうすれば良いでしょうか。
大文字と小文字を区別しない場合には、以下のように小文字(もしくは大文字)に寄せてあげます。
CountIf(TaskStatusCollection, Find(Lower("task"), Lower(Description)) > 0);
これにより、小文字に寄せられるために、大文字小文字区別しないで検索することができます。
抽出されるレコード
この条件に一致するレコードはIDが1, 3, 4, 5, 6の5つです。
PowerAppsを学ぶにはUdemyがおすすめ
この記事では
「PowerApps|PowerApps|Concat関数の基本と実践的な使用方法」を詳しく解説しました。
PowerAppsについての記事や書籍はまだまだ少ないのが現状です。
実は、Udemyでは本には載っていない専門的な分野や最新の技術トレンドに関する豊富なコースが用意されています。
これらのコースを通じて、私は多くの実践的なスキルを身につけることができました。
定期的に限定セールを行なっていますので、ぜひチェックしてみてください。
PowerAppsのさらに深い理解と実践的なスキルを身につけるために、Udemyのコースを活用することをお勧めします。