技術情報ブログ
Power Platform
2021.10.06

Power Appsでデータの順位を求める方法(RANK()関数と同等機能の実装方法)

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

本記事では、Power Appsでデータの順位を求める方法についてご紹介します。

Excelでは、標準で提供されているRANK()関数を用いれば、データの順位を求めることができます。

しかし、「Power AppsではRANK()関数をサポートしていません。(2021年9月現在)」

よって、Power Appsでデータの順位を求めるためには、関数を組み合わせ、RANK()関数と同等の機能を実装する必要があります。

 

ExcelのRANK()関数について

Excelでデータの順位を求める場合、RANK()関数を用いることで対応可能です。

例を以下に示します。

得点が最も高い学生の順位は1、次に得点が高い学生の順位が2…となっています。
また、同点の場合は、同じ順位(以下例では、2位が2人存在)となります。

RANK()関数の詳細は以下を参考にしてください。

RANK 関数

ExcelのRANK()関数

 

Power AppsでRANK()関数を実装する

冒頭でもお伝えした通り、「Power Appsでは現時点でRANK()関数はサポートされていません。」
そこで、Power Apps内の関数を組み合わせることで、RANK()関数と同等の機能を実装していきます。

では早速、実装の流れを紹介していきます。

 

(1)学生と得点を格納するコレクション(colPoints)を作成

学生と得点を格納するコレクションを作成します。

ボタンを準備し、「OnSelect」プロパティに以下の関数を記載します。

ClearCollect(colPoints, 
   {学生: "A", 得点: 100}
   , {学生: "B", 得点: 87}
   , {学生: "C", 得点: 67}
   , {学生: "D", 得点: 87}
   , {学生: "E", 得点: 45}
)
colPoints

 

(2)colPointsの得点列を基準として、順位付を行うためのコレクション(colPointsAndOrder)を作成

本記事のメインであるRANK()関数を実装していきます。

いきなりですが、完成形を記載します。

ClearCollect(colPointsAndOrder,
    AddColumns(colPoints As tmpThisRecord, "順位", CountRows(Filter(colPoints, 得点 > tmpThisRecord.得点)) + 1)
);
colPointsAndOrder

実装のキーポイントとしては、CountRows(Filter(colPoints, 得点 > tmpThisRecord.得点)) + 1の部分です。

考え方を説明していきます。

  • 「tmpThisRecord.得点」はcolPointsの得点列の各値を示します。(下図(1))

  • Filter()関数では、「tmpThisRecord.得点」より大きい得点を持つレコードを抽出します。
    また、CountRows()関数では、Filter()関数で得たレコード数(=0から始まる順位)を返します。
    最後に、CountRows()関数の結果に1を加算することで、1から始まる順位を得ることができます。(下図(2))

考え方

ちなみに、CountRows()関数の結果に1を加算せず、Filter()関数内の比較演算子を「以上(>=)」にすれば良いのでは? と思った方がいらっしゃるかもしれませんが、これは間違いです。

Filter()関数内の比較演算子にイコールを追加してはいけません。

なぜかというと、同点の場合、同順位の最大値が格納されてしまうためです。

通常は、同順位の最小値を求める必要があるので、イコールを追加しないようにしてください。

イコールを追加した場合

 

本記事では、Power AppsでRANK()関数と同等の機能を実装する方法について紹介しました。

関数を組み合わせて新しい関数を作成する場合、実装のアイデアが必要となります。
(実は、本アイデアは社内のPower Platformでのソリューション提案や実装の経験が豊富な方に教えていただきました(笑))

このような内容は、「知っていれば一瞬」ですが「知らなければ多くの時間が必要」となります。

当社では、今回のような実装のアイデアを多く発信していく予定ですので、是非今後ともご覧ください。

最後まで読んでいただき、ありがとうございました!

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

大分県出身(温泉大好き♥♥)、現在は東京都在住

1990年4月9日生まれ

30才にしてメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当しております!

シェアする
記事カテゴリ
最新記事
Power PlatformPower Apps
2021.10.20

Power Appsアプリの多言語化への対応方針

Dynamics 365 Sales
2021.10.25

はじめての Dynamics 365 Sales!【第1回】

Power PlatformPower Apps
2021.10.06

Power Appsでデータの順位を求める方法(RANK()関数と同等機能の実装方法)

Angular
2021.09.29

AngularでGoogle Maps マーカークラスタリングライブラリの利用(1)

Power PlatformPower AutomateSharePointExcel
2021.09.22

Power AutomateでExcelをSharePointリストにインポートしたい時に考えること(第11回)

PageTop
ページトップに戻る